【问题标题】:Android unchecking radio buttonsAndroid取消选中单选按钮
【发布时间】:2011-10-14 03:28:32
【问题描述】:

我有这 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");

    }
}

}

【问题讨论】:

    标签: java android radio-button


    【解决方案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);
    
                      }
    }
    
    }                     
    

    【讨论】:

      【解决方案2】:

      因此,当您选择radio1radio2 时,您通过调用radio3.setClickable(false);radio3 设置为不可点击。您的清除按钮不会逆转这一点。

      我建议在你的onClick(...) 方法中为你明确的OnClickListener 打电话

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 2013-10-14
        • 2012-01-23
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-04-30
        相关资源
        最近更新 更多