我对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);
答案 0 :(得分:1)
试试这个:
String variable="button" + a;
int Button = getResources().getIdentifier(variable, "drawable", getPackageName());
//Whatever you want to do..
答案 1 :(得分: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()
答案 2 :(得分:1)
当我们使用R.drawable.button1
时,它引用int
类中的drawable
元素,该元素位于R
类中。 R.java是gen文件夹中的自生成类。
所以int TheButton = R.drawable["button"+a];
无效。
如果你想从js中分配一个特定的id,那么你可以直接使用从R.java复制的代码,如从{java复制的int TheButton =0x7f080002;
OR
int TheButton = getResources().getDrawable(R.drawable.button1);
答案 3 :(得分:0)
Ok首先,因为在输入java变量时,不能将int添加到字符序列中。
其次,您不能使用字符串从类中调用公共变量(在本例中为自动生成的R类)。
第三点,如果tou想要在Button上使用多个drawable并在它们之间切换,我建议你使用level-list drawable或state-liste drawable。
查看:http://developer.android.com/guide/topics/resources/drawable-resource.html