【问题标题】:Getting resource from name instead of id in android在android中从名称而不是id获取资源
【发布时间】:2011-10-28 03:40:14
【问题描述】:
我有以下代码用于使用名称而不是 id 获取资源:
spec = new ImageView[56];
for (i=2; i<=56; i++) {
String s = null;
s = "items_r"+Integer.toString(i)+"_c1";
spec[i] = (ImageView) findViewById(getResources().getIdentifier(s,"drawable",getPackageName()));
Log.e(tag, Boolean.toString(spec[i] == null));
}
我的可绘制文件夹中有 56 个项目,名为 items_r1_c1 到 items_r56_c1;
但我将 spec[i] 设为空。
有人可以指出我的错误以及如何纠正它吗?
谢谢。
【问题讨论】:
标签:
java
android
xml
android-layout
nullpointerexception
【解决方案1】:
试试这个
int id = findViewById(getResources().getIdentifier(s,"drawable",getPackageName());
spec[i] = (new ImageView()).setImageResource(id);
【解决方案2】:
findViewById(int) 用于查找已膨胀且当前存在于您的 Activity 内容视图下的 Views。
您需要使用Resources.getDrawable(int) 或ImageView.setImageResource(int)。
spec = new ImageView[56];
for (i=2; i<=56; i++) {
String res = "items_r" + Integer.toString(i) + "_c1";
int resId = getResources().getIdentifier(res, "drawable", getPackageName());
spec[i] = new ImageView();
// Drawable image = getResources.getDrawable(resId);
// spec[i].setImageDrawable(image);
spec[i].setImageResource(resId);
Log.e(tag, Boolean.toString(spec[i] == null));
}