Android取消选中单选按钮

时间:2011-07-27 10:27:15

标签: java android radio-button

我有3个单选按钮,我们假设是radio1,radio2,radio3。我所做的是,如果我检查了radio1和radio2,则radio3将无法检查,依此类推。所以我一次只能检查2个按钮。

然后我做了这个按钮,如果我点击它,它将取消选中所有选中的单选按钮。现在我的问题是每当我尝试检查radio1和radio2并清除它时。即使不再检查radio1和2,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");

    }
}

}

2 个答案:

答案 0 :(得分:4)

因此,当您选择radio3radio3.setClickable(false);时,您已通过致电radio1radio2设置为无法点击。您的清除按钮不会反转此情况。

我建议您使用onClick(...)方法明确OnClickListener致电

radio1.setClickable(true);
radio2.setClickable(true);
radio3.setClickable(true);

当你清除选择时,这会阻止它们被禁用,使它们恢复到默认状态。

答案 1 :(得分:1)

实际上,当使用单个单选按钮而不是无线电组时,该键正在使用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);

                  }
}

}