2013-05-13 64 views
0

我對Java很陌生。所以請原諒我問這樣一個簡單的問題。使用變量來指定R對象


要設置視圖的背景圖像,我可以做到這一點的

int TheButton = R.drawable.button1; 
button.setBackgroundResource(TheButton); 

但如何才能做到這一點,如果我想用一個變量來指定將R對象?

int a = 1; 
int TheButton = R.drawable["button"+a]; //this is what I'll do in javascript... 
button.setBackgroundResource(TheButton); 

回答

1

試試這個:

  String variable="button" + a; 
     int Button = getResources().getIdentifier(variable, "drawable", getPackageName()); 
     //Whatever you want to do.. 
1

在Android中,你不能訪問資源的方式,因爲當Android的編譯你的應用程序將所有的這些字段值(INT)。

所以,你需要編寫自己的映射得到你期待的結果,例如,你可以把所有的相關資源的數組:

int[] myResourceArray = new int[]{R.drawable.first, R.drawable.second ...}; 
button.setBackgroundResource(myResourceArray[0]); 
... 
button.setBackgroundResource(myResourceArray[1]); 

或者你可以使用的方式@Sercan建議,但根據Android的文檔,他們不鼓勵使用它出於性能原因。看看這裏:getIdentifier()

0

好吧,首先,因爲在java變量被鍵入,你不能添加一個int到字符序列。

其次,您不能使用字符串從類中調用公共變量(在本例中爲自動生成的R類)。

第三點,如果tou想要在按鈕上使用很多drawable並在它們之間切換,我建議您使用level-list drawable或者state-liste drawable。

看看:http://developer.android.com/guide/topics/resources/drawable-resource.html

1

當我們使用R.drawable.button1它是指int元素drawable類,這是在R類。 R.java是gen文件夾中的一個自生類。

所以int TheButton = R.drawable["button"+a];將無法​​正常工作。

,如果你想從指定JS一個特定的ID,那麼你可以直接使用來自R.java複製的代碼一樣int TheButton =0x7f080002;從R.java

OR

int TheButton = getResources().getDrawable(R.drawable.button1); 
複製
相關問題