Java 选择其他复选框时取消选中复选框

Java 选择其他复选框时取消选中复选框,java,android,android-checkbox,Java,Android,Android Checkbox,我知道这听起来很简单,但请听我说完。我有两个复选框,当其中一个被选中时,我想取消选中另一个复选框 我尝试了以下方法: CheckBox chk1, chk2; if (chk1.isChecked()) { chk2.setChecked(false); } if (chk2.isChecked()) { chk1.setChecked(false); } 我也尝试过: chk1.setOnCheckedChangeListener(new CompoundButton.O

我知道这听起来很简单,但请听我说完。我有两个复选框,当其中一个被选中时,我想取消选中另一个复选框

我尝试了以下方法:

CheckBox chk1, chk2;

if (chk1.isChecked()) {
    chk2.setChecked(false);
}

if (chk2.isChecked()) {
    chk1.setChecked(false);
}
我也尝试过:

chk1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        chk2.setChecked(false);
    }
});

chk2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        chk1.setChecked(false);
    }
});
我知道我应该使用一个切换按钮,但复选框的设计工作,所以我正在寻找一种方法,使这项工作


有什么想法吗?

我认为在设计方面,复选框适用于您想让用户选择多个选项的情况。我认为你应该尝试使用radioputton,这里有一个链接:

多亏了我,我成功地让它工作了,但实现了
OnClickListener
,如下所示:

chk1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        chk1.setChecked(true);
        chk2.setChecked(false);
    }
});
chk2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        chk2.setChecked(true);
        chk1.setChecked(false);
    }
            });
两种变体: 首先是Java

final CheckBox cb1 = findViewById(R.id.checkBox1);
    final CheckBox cb2 = findViewById(R.id.checkBox2);
    cb1.setChecked(true);

    cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
            cb2.setChecked(!isChecked);
        }
    });

    cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
            cb1.setChecked(!isChecked);
        }
    });
或者科特林是第二名

val cb1 = this.findViewById<CheckBox>(R.id.checkBox1)
    val cb2 = this.findViewById<CheckBox>(R.id.checkBox2)

    cb1.isChecked = true

    cb1.setOnCheckedChangeListener { _, isChecked ->  cb2.isChecked = !isChecked }
    cb2.setOnCheckedChangeListener { _, isChecked ->  cb1.isChecked = !isChecked }
val cb1=this.findviewbyd(R.id.checkBox1)
val cb2=此.findViewById(R.id.checkBox2)
cb1.isChecked=true
cb1.setOnCheckedChangeListener{{,isChecked->cb2.isChecked=!isChecked}
cb2.setOnCheckedChangeListener{{,isChecked->cb1.isChecked=!isChecked}

处理click事件而不是checkedChange事件如何?我可以快速尝试,我会让您know@NoEm谢谢,很好用不客气就像我在问题中说的。。我知道这违背了设计原则,但我正在寻找解决办法。我会选择单选按钮路线,并像复选框一样对其进行蒙皮。我已经让它起作用了,但我对你的答案是否也起作用感兴趣,所以我试了试,但没有起作用。你能给我链接一个不起作用的完整代码吗?因为它在我的设备上运行良好