2016-07-05 46 views
2

我試圖讓我的兩個複選框具有單獨的值,當選中其中一個未選中時。我可以用這個來完成:解決方法檢查一個框並取消選中其他

final CheckBox checkYes = (CheckBox) findViewById(R.id.visual_yes); 
     final CheckBox checkNo = (CheckBox) findViewById(R.id.visual_no); 

     CompoundButton.OnCheckedChangeListener checker = new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (checkYes.isChecked()) { 

        checkNo.setChecked(false); 
//     finish(); 
       } 
       else if (checkNo.isChecked()) { 
        checkYes.setChecked(false); 

//     finish(); 
       } 
       savePrefs("checkYesVisual", checkYes.isChecked()); 
       savePrefs("checkNoVisual",checkNo.isChecked()); 
      } 
     }; 
     checkYes.setOnCheckedChangeListener(checker); 
     checkNo.setOnCheckedChangeListener(checker); 
    } 

但我的問題是,第一個按鈕,我按的是,工作應該如何唯一的一個。例如,如果我先按yes,然後在不切換後按no。但如果我按否,然後是檢查開關(正如我想要的那樣)。

我相信我的問題是將checkNo文本框設置爲false,如果單擊yes,並且該值只保存到yes框未選中。

有什麼建議嗎?

+0

謝謝@Ismael我不知道單選按鈕存在,讓它工作!如果您將其寫爲答案,我會將其標記爲正確的答案。 – thenry

回答

0

您可以使用單選按鈕組獲得此行爲

2

正如Ismael所說,您正在尋找的行爲是帶有單選按鈕的Radio組。只有一個可以檢查,並自動取消選中其他人。

<?xml version="1.0" encoding="utf-8"?> 

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <RadioButton android:id="@+id/radio_pirates" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/pirates" 
     android:onClick="onRadioButtonClicked"/> 

    <RadioButton android:id="@+id/radio_ninjas" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/ninjas" 
     android:onClick="onRadioButtonClicked"/> 
</RadioGroup> 

請不要檢查它是否適合您的需求的答案。要求伊斯梅爾把他的評論寫成答案,因爲他不承認所有的信用。

相關問題