作者LaPass (LaPass)
看板AndroidDev
標題[問題] 取得R資源的欄位
時間Wed Aug 15 10:50:23 2012
常在寫Android的人應該對這段程式碼不陌生
Drawable swordD = getResources().getDrawable(
R.drawable.pic001);
Android有一套方法去管理自己的資源
裡面很常用R檔
為了在不同Activity中傳遞圖片
我也會把R的數值傳來傳去.....
甚至從SERVER叫Android顯示圖示時,也傳個int叫她顯示指定的icon
原本只有三、四十張而已
所以就一張張的設定檔名、圖片代碼的對對照表
private static final Map<Integer,Integer> drawableMap =
new HashMap<Integer, Integer>();
static
{
drawableMap.put(-1, R.drawable.defult);
drawableMap.put(1, R.drawable.pic1);
drawableMap.put(2, R.drawable.pic2);
.......
}
現在,發生悲劇了
圖片突然暴增到幾千張
請問有辦法處理這種狀況嗎?
想先找Android內部的方法
如果沒有的話,再去找JAVA的反射來用 (這個我沒用過.... 現在還在找範例)
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.16.65
用反射解決了,才三行,歡樂 ﹨(╯▽╰)∕
Class ownerClass = R.drawable.class;
Field field = ownerClass.getField("pic"+id);
Integer rid=field.getInt(null);
try...catch 略
※ 編輯: LaPass 來自: 61.59.16.65 (08/15 12:16)
推 asilzheng:context.getResources().getIdentifier 08/15 12:45
→ LaPass:static中沒辦法拿到context,如果要改成那樣的話,要大修 08/15 12:47
→ givemepass:XD 這個問題我剛解過 也是用反射 08/15 13:24
推 weruioi:自定一個Application物件,在onCreate存一個instace在 08/16 23:46
→ weruioi:static filed就可以隨時拿到application context囉 08/16 23:47