如果检查两个复选框的语句是否存在问题

时间:2019-08-13 09:58:23

标签: java android if-statement conditional-statements

我正在尝试编写一条代码,指出如果选中了一个复选框,则不能同时选中第二个复选框。 我有一个复选框,名为dayShift,另一个名为nightShift。 如果我正在检查nightShift和THEN dayShift,则代码将按预期工作。但是,如果我先检查dayShift和THEN nightShift,则该代码不适用。

public void days(View view) {
    CheckBox nightShift_check = (CheckBox)findViewById(R.id.nightShift);
    CheckBox dayShift_check = (CheckBox)findViewById(R.id.dayShift);
    if (nightShift_check.isChecked() && dayShift_check.isChecked())
    {
        nightShift_check.setChecked(false);
        dayShift_check.setChecked(false);
        Toast.makeText(mainApplication.this,"Error message",Toast.LENGTH_LONG).show();
    }
}

2 个答案:

答案 0 :(得分:0)

如果您需要为此执行不同的逻辑,则可以使用RadioButton,这样就不能同时有两个语句为真。

否则,您可以在setOnCheckedChangeListener上添加称为CheckBox的内容,并如果同时选中了两者,则取消选中它们,例如:

dayShift_check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked && nightShift_check.isChecked()) {
            dayShift_check.setChecked(false);
            nightShift_check.setChecked(false);
        }
    }
});

但是,我仍然强烈建议您使用RadioButton(如果需要从两者中选择),如上面在注释部分中提到的@NileshRathod。 如果您需要从更多选项中选择一个,则可能要使用RadioGroup

答案 1 :(得分:0)

您应该在CheckBox上使用侦听器,以获取每次单击时的状态:

nightShift_check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            dayShift_check.setChecked(!isChecked);
        }
    });

dayShift_check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            nightShift_check.setChecked(!isChecked);
        }
    });

当一个处于一种状态时,另一个处于相反的状态。 希望对您有所帮助。