[英]Android unchecking radio buttons
我有这3个单选按钮,让我们假设radio1,radio2,radio3。 我所做的是,如果我检查了radio1和radio2,radio3将不可检查,依此类推。 所以我一次只能检查2个按钮。
然后,我将该按钮设为,如果单击它,它将取消选中所有选中的单选按钮。 现在我的问题是什么时候我尝试检查radio1和radio2并清除它。 即使不再检查radio1和radio2,radio3仍然不可单击。
RadioButton radio1;
RadioButton radio2;
RadioButton radio3;
Button clear;
TextView tv;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.secondxml);
radio1 = (RadioButton) findViewById(R.id.rd1);
radio2 = (RadioButton) findViewById(R.id.rd2);
radio3 = (RadioButton) findViewById(R.id.rd3);
radio1.setOnCheckedChangeListener(this);
radio2.setOnCheckedChangeListener(this);
radio3.setOnCheckedChangeListener(this);
tv = (TextView) findViewById(R.id.tv);
clear = (Button) findViewById(R.id.clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
radio1.setChecked(false);
radio2.setChecked(false);
radio3.setChecked(false);
tv.setText("");
}
});
}
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if(radio1.isChecked() && radio2.isChecked()){
tv.setText("Radio1 and 2 is checked ");
radio3.setClickable(false);
}
if(radio1.isChecked() && radio3.isChecked()){
radio2.setClickable(false);
tv.setText("radio 1 and 3 is checked");
}
if(radio2.isChecked() && radio3.isChecked()){
radio1.setClickable(false);
tv.setText("radio2 and 3 is checked");
}
}
}
因此,您通过调用radio3.setClickable(false);
将radio3
设置为不可点击radio3.setClickable(false);
当您选择radio1
和radio2
。 您的清除按钮不会扭转这种情况。
我建议您在onClick(...)
方法中调用清晰的OnClickListener
radio1.setClickable(true);
radio2.setClickable(true);
radio3.setClickable(true);
当您清除选择时,这将阻止它们被禁用,从而使它们返回默认状态。
实际上,当使用单个单选按钮而不是单选按钮组时,键是使用radio.isSelected()查找按钮的当前状态。
这段代码给我的触摸监听器解决了我遇到的类似问题:
OnClickListener radio_button_click = (new OnClickListener() {
public void onClick(View v) {
RadioButton rb = (RadioButton) v;
if( rb.isSelected()==true) {
rb.setSelected(false);
rb.setChecked(false);
rb.setClickable(true);
}
else{
rb.setSelected(true);
rb.setClickable(true);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.