[問題] 取得R資源的欄位

看板AndroidDev作者 (LaPass)時間13年前 (2012/08/15 10:50), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
常在寫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)

08/15 12:45, , 1F
context.getResources().getIdentifier
08/15 12:45, 1F

08/15 12:47, , 2F
static中沒辦法拿到context,如果要改成那樣的話,要大修
08/15 12:47, 2F

08/15 13:24, , 3F
XD 這個問題我剛解過 也是用反射
08/15 13:24, 3F

08/16 23:46, , 4F
自定一個Application物件,在onCreate存一個instace在
08/16 23:46, 4F

08/16 23:47, , 5F
static filed就可以隨時拿到application context囉
08/16 23:47, 5F
文章代碼(AID): #1GAmvovU (AndroidDev)