我想根据变量设置按钮的背景。该视图无法应用于 int,但我该如何解决这个问题?
String picture = db.getName();
Button cal = (Button)findViewById(R.id.cal);
int resID = getResources().getIdentifier(picture, "drawable", this.getPackageName());
cal.setBackgroundDrawable(resID);
答案 0 :(得分:0)
您只需使用条件测试来测试您正在使用的变量的值。
我从代码片段中假定控制应用哪个背景的变量是String picture = db.getName();
行。所以你会接受那个变量并对它进行测试。
像这样:
String picture = db.getName();
Button cal = (Button)findViewById(R.id.cal);
Drawable resId;
if(picture.equals("tree") {
resId = R.drawable.tree_image;
} else if(picture.equals("light") {
resId = R.drawable.light_image;
}
cal.setBackgroundDrawable(resId);
但是,您也可以将可绘制文件夹中的图像命名为与db.getName()
相同的图像。然后使用您的代码,您可以获得drawable。 注意您需要获取可绘制的ID而不是ID 我看到您获得的int id值在方法setBackgroundDrawable()
要使用您的方法,您只需执行此操作:
String picture = db.getName();
Button cal = (Button)findViewById(R.id.cal);
int resID = getResources().getIdentifier(picture, "drawable", this.getPackageName()); // This will return an integer value stating the id for the image you want.
Drawable drawablePic = getResources().getDrawable(resID); //This will get you the image in the form of a drawable to be set in the method below.
cal.setBackgroundDrawable(drawablePic); //Now we set the drawable image to the view.
您可以使用任何一种方法。第二个全部取决于您如何在可绘制文件夹中命名图像。
答案 1 :(得分:0)
call switch method in where your variable change
switch (YourVariable) {
case 1:
// set your code to determine which button background should be here
break;
case 2:
// set your code to determine which button background should be here
break;
case 3:
// set your code to determine which button background should be here
break;
default:
// make your default code here
break;