2011-08-16 88 views
1

我对获得使用名称而不是ID的资源下面的代码:获取资源的Android

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]设置为null。
有人能指出我的错误以及如何纠正错误吗?
谢谢。

回答

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)); 
} 
+0

会尽量让你知道 – Brahadeesh

1

试试这个

int id = findViewById(getResources().getIdentifier(s,"drawable",getPackageName()); 
spec[i] = (new ImageView()).setImageResource(id);