我有以下代码来获取使用name而不是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));
}
我的drawable文件夹中有56个项目名为items_r1_c1到items_r56_c1;
但我得到spec [i]为null。
有人能指出我的错误以及如何纠正错误吗?
谢谢。
答案 0 :(得分:2)
findViewById(int)
用于查找已经膨胀且当前存在于您的活动内容视图下的View
。
您需要使用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));
}
答案 1 :(得分:1)
试试这个
int id = findViewById(getResources().getIdentifier(s,"drawable",getPackageName());
spec[i] = (new ImageView()).setImageResource(id);