0

我对 Java 很陌生。所以请原谅我问了这么简单的问题。


要设置视图的背景图像,我可以通过

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);
4

4 回答 4

1

试试这个 :

         String variable="button" + a;
         int Button = getResources().getIdentifier(variable, "drawable",  getPackageName()); 
         //Whatever you want to do..
于 2013-05-13T08:52:16.833 回答
1

在 Android 中,您不能以这种方式访问​​资源,因为当 android 编译您的应用程序时,它会将所有这些字段转换为量值 (int)。

因此,您需要编写自己的映射器来获得您期望的结果,例如您可以将所有相关资源放在一个数组中:

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

或者您可以使用@Sercan Suggested 的方式,但根据 android 的文档,出于性能原因,他们不鼓励使用它。看看这里:getIdentifier()

于 2013-05-13T08:53:10.527 回答
1

当我们使用R.drawable.button1它时,它指的是类中 的int元素 。R.java 是 gen 文件夹中的自生成类。drawableR

所以int TheButton = R.drawable["button"+a];行不通。

如果你想从 js 分配一个特定的 id,那么你可以直接使用从 R.java 复制的代码,就像 int TheButton =0x7f080002; 从 R.java 复制的一样

或者

int TheButton = getResources().getDrawable(R.drawable.button1);
于 2013-05-13T08:57:50.380 回答
0

好的,首先,因为在 java 中变量是类型化的,所以不能将 int 添加到字符序列中。

其次,您不能使用字符串从类(在本例中为自动生成的 R 类)调用公共变量。

第三点,如果你想在一个 Button 上使用许多 drawable 并在它们之间切换,我建议你使用 level-list drawable 或 state-liste drawable。

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

于 2013-05-13T08:53:15.397 回答