我正在尝试构建一个测试应用程序,我正在使用单选按钮来选择A,B,C,D。我正在尝试计算结果 - >例如,当按A增加1时,按B增加2,依此类推。我最初使用的是Radio Group,但据我所知,如果用户试图将问题的答案从A更改为B,则递增的结果将为3,而不是预期的2。所以我切换到Radio Buttons并尝试以下代码:
rb1.setOnCheckedChangeListener(new
android.widget.CompoundButton.OnCheckedChangeListener (){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
i++;
if(rb2.isChecked())
{
i--;
rb2.setChecked(false);
}
}
});
rb2.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener (){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
i++;
if(rb1.isChecked())
{
i--;
rb2.setChecked(false);
}
}
});
现在必须单击第二个单选按钮才能进行检查。这是一个错误,是否可以修复。我需要按钮在第一次点击后改变状态。欢迎所有的想法和建议。谢谢。
答案 0 :(得分:1)
您可以更改代码以使用switch语句(如其中一条评论中所述),但是如果您想继续使用所拥有的内容,并回答您的问题。在您的rb2代码中,您说如果选中rb1,则将rb2设置为false。因此,如果您单击rb1(现在已经选中/推送)并且在第一次取消选中时单击rb2,则第二次保持选中状态。
坚持你的编码风格和程序:
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
i++;
if(rb1.isChecked())
{
i--;
rb2.setChecked(false);
}
}
应该是:
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
i++;
if(isChecked && rb1.isChecked())
{
i--;
rb1.setChecked(false);
}
rb2.setChecked(isChecked);
}
对您的rb1方法进行类似的更改。