簡體   English   中英

Android取消選中單選按鈕

[英]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); 當您選擇radio1radio2 您的清除按鈕不會扭轉這種情況。

我建議您在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM