作者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)
1F:推 asilzheng:context.getResources().getIdentifier 08/15 12:45
2F:→ LaPass:static中没办法拿到context,如果要改成那样的话,要大修 08/15 12:47
3F:→ givemepass:XD 这个问题我刚解过 也是用反射 08/15 13:24
4F:推 weruioi:自定一个Application物件,在onCreate存一个instace在 08/16 23:46
5F:→ weruioi:static filed就可以随时拿到application context罗 08/16 23:47