我有一个代码块,该代码可以检查复选框的检查状态并相应地显示值,但是在我的代码中,我有一个必须使用像

if (cb1.isChecked()) {
a="abc";        
} 

else if(cb1.isChecked() && cb2.isChecked()) {
a="pqr";
}

else if(cb2.isChecked()){
a="asd";
}

else{
a="xyz";
}

如果选择了Checkbox1或Checkbox2,我会得到值

知道该代码怎么了?

有帮助吗?

解决方案

这是因为它是一个 else if 代替 ifs。一旦满足第一个,就不会检查其他人。更改您检查这些的顺序。所以类似

if (cb1.isChecked() && cb2.isChecked()) {
    a="abc";        
} 
else if(cb1.isChecked()) {
    a="pqr";
}   
else if(cb2.isChecked()){
    a="asd";
}   
else{
    a="xyz";
}

其他提示

改成:

if(cb1.isChecked() && cb2.isChecked()) {
a="pqr";
}

else if (cb1.isChecked()) {
a="abc";        
} 

else if(cb2.isChecked()){
a="asd";
}

else{
a="xyz";
}

在您的代码中,如果检查了CD1,它将不再介入其他。

在其他梯子中,只能执行一个块,您应该像以下几个以下操作:

if (cb1.isChecked()) {
    a = cb2.isChecked() ? "pqr" : "abc";       
} else if(cb2.isChecked()){
    a="asd";
}
else{
    a="xyz";
}

或者

if(cb1.isChecked() && cb2.isChecked()) {
    a="pqr";
}
else if (cb1.isChecked()) {
    a="abc";        
} 
else if(cb2.isChecked()){
    a="asd";
}
else{
    a="xyz";
}

如果他没有的话,如果他不进入他的其他人,他将进入第一个

首先修改条件

if(cb1.ischecked()&&!cb2.ischecked())

目前,由于第一个条件仅取决于CB1的值,因此控制进入第一块。

控制永远不会进入本逻辑中的第二个块。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top