2011-08-16 91 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);