2013年8月3日星期六

Android﹣從String取得Resources對應的int

寫Android程式時,在取Resources資源時,
正常情況不會知道對應的int,但一定會知道寫在String.xml中的name;

但因為這些name在編輯時會轉成JAVA的Field,放在R.java檔裡面,
所以取Resources資源時,必需透過類似R.string.name的方式,才能取到對應的int;

但世事不是都這麼美好的,有時name是在程式執行中才能拿到的,
而拿到手的是一個String,此時需要想辦法轉成R.string.name對應的int,
才能取對對應的,但要怎麼轉呢?

透過reflect的方式,下方是透過String取得Drawable的int範例程式碼:


public int getDrawableId(String id) throws SecurityException,NoSuchFieldException, IllegalArgumentException,IllegalAccessException {
Field f = (Field) R.drawable.class.getDeclaredField(id);
return f.getInt(R.drawable.class);
}

没有评论:

发表评论