如果两个复选框的语句被选中问题

我正在尝试编写一段代码,声明如果选中一个复选框,则不能同时选中第二个复选框。我有一个名为 dayShift 的复选框,另一个名为 nightShift。如果我正在检查 nightShift 和 THEN dayShift,代码将按预期工作。但是如果我先检查 dayShift 然后再检查 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();

    }

}


一只甜甜圈
浏览 136回答 2
2回答

繁星点点滴滴

如果您需要执行不同的逻辑,您可以使用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如果您需要从两者中进行选择,如果您需要从多个选项中选择一个选项,您可能想要使用RadioGroup.

一只萌萌小番薯

您应该在 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);        }    });当一个人处于一种状态时,另一个人处于相反的状态。希望能有所帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java