2016-07-05 41 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> 

请不要检查它是否适合您的需求的答案。要求伊斯梅尔把他的评论写成答案,因为他不承认所有的信用。