我有一个类型为Button的按钮,将被单击。单击此按钮后,它将颜色变为绿色。
当我单击按钮时,它的颜色变为绿色,但是当我再次单击它时,它应该回到标准颜色。
我有2个可绘制文件,名称分别为checked_list和not_checked_list。 这两个都很好。
但是当我单击按钮时,单击发生了。而且由于某种原因我无法再次单击它。
我有一个带有公共void sendMessage方法的Button字段,该方法挂接到按钮onClick上。最好只为代码中的按钮设置一个onClickEvent。
这是我到目前为止的代码。
int checked = 0;
Button gotIt;
gotIt = (Button)findViewById(R.id.got_it);
switch(checked) {
case 0:
gotIt.setBackgroundResource(R.drawable.checked_list);
checked = 1;
break;
case 1:
gotIt.setBackgroundResource(R.drawable.not_checked_list);
checked = 0;
break;
}
所以在这里,我希望单击它时可以在这两种颜色之间进行更改。 有什么建议吗?
答案 0 :(得分:1)
您必须跟踪checked
的最后一个值。现在,您每次都将其重置为0
,因为它是方法调用中的本地字段。将checked
设置为类字段,它将按预期工作。
答案 1 :(得分:1)
如果您发布的所有代码都在onClick方法中,则check int始终为0,并且永远不会为1,因为它是在方法的第一行中设置的。将选中的int移到此方法之外,它应该可以工作。 动态设置点击侦听器将具有与XML布局设置相同的结果。
int checked = 0;
Button gotIt;
void sendMessage(View v) {
gotIt = (Button)findViewById(R.id.got_it);
switch(checked) {
case 0:
gotIt.setBackgroundResource(R.drawable.checked_list);
checked = 1;
break;
case 1:
gotIt.setBackgroundResource(R.drawable.not_checked_list);
checked = 0;
break;
}
}
答案 2 :(得分:0)
您可以尝试此方法
//global variables
boolean isChecked = true;
Button gotIt;
//put this in onCreate()
gotIt = (Button)findViewById(R.id.got_it);
gotIt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(isChecked == true){
gotIt.setBackgroundResource(R.drawable.checked_list);
isChecked = false;
}else{
gotIt.setBackgroundResource(R.drawable.not_checked_list);
isChecked = true;
}
}
});