所以我做了七个RadioButtons
。有两组。前三名和后四名!我想启用";提交";按钮,如果两个组都已选中。但问题是,即使我检查了其中一个单选按钮,它也会启用该按钮。所以基本上它忽略了and(&&)
的陈述。这是我的代码:
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
boolean checkeds = ((RadioButton) view).isChecked();
if(!thirty.isChecked() || !fourty.isChecked() || !fifty.isChecked() && !geo.isChecked() || !eng.isChecked() || !country.isChecked() || !movi.isChecked()){
submit.setEnabled(true);
}else{
submit.setEnabled(false);
}
switch (view.getId()) {
case R.id.thirty:
if (checked) {
scorelimit = 3;
fourty.setChecked(false);
fifty.setChecked(false);
}break;
case R.id.fourty:
if (checked) {
scorelimit = 4;
thirty.setChecked(false);
fifty.setChecked(false);
}break;
case R.id.fifty:
if (checked) {
scorelimit = 5;
thirty.setChecked(false);
fourty.setChecked(false);
}break;
}
switch (view.getId()) {
case R.id.geo:
if (checkeds) {
gamemode = 3;
eng.setChecked(false);
country.setChecked(false);
movi.setChecked(false);
}break;
case R.id.eng:
if (checkeds) {
gamemode = 4;
geo.setChecked(false);
country.setChecked(false);
movi.setChecked(false);
}break;
case R.id.country:
if (checkeds) {
gamemode = 5;
geo.setChecked(false);
eng.setChecked(false);
movi.setChecked(false);
}break;
case R.id.movi:
if (checkeds) {
gamemode = 6;
geo.setChecked(false);
eng.setChecked(false);
country.setChecked(false);
}break;
}
}
由于AND是在OR之前执行的,它基本上只对fifty.isChecked()&&geo.isChecked()
执行AND,对其余的与上一次AND的结果执行OR,你应该加上括号,如果我理解正确,如果检查了数字组{30,40,50}和类别组{eng,geo,movi,country}中的一个,你应该启用提交,所以为了实现这一点,我删除了摆在他们面前的NOT,它最终应该是这样的。
if((thirty.isChecked() || fourty.isChecked() || fifty.isChecked()) && (geo.isChecked() || eng.isChecked() || country.isChecked() || movi.isChecked()))
现在应该是指if((one of first group is checked) and (one of the second group is checked))then enable the submit button