Сначала установите флажки в вашем Java-файле
CheckBox cbox_choclate_syrup,cbox_sprinkles,cbox_crushed_nuts,cbox_cherries, cbox_orio_cookie_crumbles;
Затем скопируйте и вставьте следующие функции:
private void setupFindViewById(){
CheckBox cbox_choclate_syrup = findViewById(R.id.cbox_choclate_syrup);
cbox_sprinkles = findViewById(R.id.cbox_sprinkles);
cbox_crushed_nuts = findViewById(R.id.cbox_crushed_nuts);
cbox_cherries = findViewById(R.id.cbox_cherries);
cbox_orio_cookie_crumbles = findViewById(R.id.cbox_orio_cookie_crumbles);
}
private CheckBox[] getCheckBoxArray(){
return new CheckBox[]{
CheckBox cbox_choclate_syrup,cbox_sprinkles,cbox_crushed_nuts,cbox_cherries, cbox_orio_cookie_crumbles
};
}
В вашем методе onCreate вызовите setupFindViewById ()
теперь замените ваш onCheckboxClicked
метод следующим:
public void onCheckboxClicked(View view) {
tag = "Toppings: ";
for(CheckBox checkBox: getCheckBoxArray()){
boolean checked = checkBox.isChecked();
switch (checkBox.getId()){
case R.id.cbox_choclate_syrup:
if (checked)
tag = tag + "chocolate syrup ";
break;
case R.id.cbox_sprinkles:
if (checked)
tag = tag + "sprinkles ";
break;
case R.id.cbox_crushed_nuts:
if (checked)
tag = tag + "crushed nuts ";
break;
case R.id.cbox_cherries:
if (checked)
tag = tag + "cherries ";
break;
case R.id.cbox_orio_cookie_crumbles:
if (checked)
tag = tag + "orio cookie crumbles ";
break;
}
}
}
Теперь все готово:
Что я сделал: Сначала нам понадобились переменные, соответствующие вашим виджетам. Затем мы создали функцию getCheckBoxArray()
, которая будет возвращать массив флажков. В методе onCheckboxClicked
мы перебираем массив, потому что хотим проверить состояние каждого флажка
Проблема, упомянутая в комментарии :
Однако, это не работает при втором нажатии кнопки. Позволь мне объяснить;
когда я выбираю вишни и брызгает и нажимаю сообщение показать
Кнопка, тост выглядит идеально с двумя начинками, которые я выбрал
с флажками. Но без какой-либо цепочки на флажки (все
флажки остаются такими же, как первый щелчок) и сделайте второй щелчок на
кнопка, тост кажется пустым. Я думаю, мне нужен способ сбросить
тег, но где?
Это происходит потому, что значение переменной тега установлено на tag = "Toppings: ";
в tosMessage(String message)
метод. Если вы удалите эту строку из этого метода, она должна работать нормально.