我试图让我的两个复选框有单独的值,当其中一个被选中时,另一个被取消选中。我可以通过以下方式完成此任务:

 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时将checkno文本框设置为false,并且该值只是保存到取消选中yes框。
有什么建议吗?

最佳答案

您可以使用单选按钮组获得此行为

10-04 13:52