我有几个CheckBoxes:
checkBox1 = (CheckBox)findViewById(R.id.one);
checkBox2 = (CheckBox)findViewById(R.id.two;
checkBox3 = (CheckBox)findViewById(R.id.three);
checkBox4 = (CheckBox)findViewById(R.id.four);
checkBox5 = (CheckBox)findViewById(R.id.five);
checkBox6 = (CheckBox)findViewById(R.id.six);
checkBox7 = (CheckBox)findViewById(R.id.seven);
然后我将它们添加到一个数组中:
List<CheckBox> checkBoxes = new ArrayList<>();
CheckBox checkBox;
checkBoxes.add(checkBox1); checkBoxes.add(checkBox2);
checkBoxes.add(checkBox3); checkBoxes.add(checkBox4);
checkBoxes.add(checkBox5); checkBoxes.add(checkBox6);
checkBoxes.add(checkBox7);
如果其中一个CheckBox在按钮点击时为空,我想制作一个Toast。所以我在按钮内使用了for循环:
public void onButtonClick(){
for(int i = 0; i <checkBoxes.size(); i++){
checkBox = checkBoxes.get(i);
}
if(!checkBox.isChecked){
//make Toast "Hey, you didn't check a box"
}else{
//do something based on the checked box.
}
}
问题是如果检查了CheckBox并且它没有执行else代码,则仍会显示Toast。 任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
您的代码仅获取最后一个复选框。你需要在循环中做更多的工作:
public void onButtonClick() {
boolean atLeastOneChecked = false;
for (int i = 0; i < checkBoxes.size(); i++){
CheckBox checkBox = checkBoxes.get(i);
if (checkBox.isChecked()) {
atLeastOneChecked = true;
break;
}
}
if (!atLeastOneChecked){
//make Toast "Hey, you didn't check a box"
} else {
//do something based on the checked box.
}
}