Я делаю маленькое приложение для заказа пиццы для колледжа.В приложении, если пользователь выбирает «маленький», «средний» или «большой» из группы радиокнопок, показанная цена будет пересчитана с учетом предоставленной информации.Однако по какой-то причине цена, указанная после каждого времени, неверна.
Вот соответствующий код:
MainActivity.java
private void Init(){
onCalculate();
switchToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (switchToggle.isChecked()){
switchToggle.setText("Yes");
}
else {
switchToggle.setText("No");
}
}
});
smallRadioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
sizeStatus = "Small";
onCalculate();
}
});
mediumRadioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
sizeStatus = "Medium";
onCalculate();
}
});
largeRadioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
sizeStatus = "Large";
onCalculate();
}
});
meatCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
onCalculate();
}
});
cheeseCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
onCalculate();
}
});
veggiesCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
onCalculate();
}
});
}
private void onCalculate(){
resultTextView.setText("$" + Integer.toString(Order.CalculatePrice(sizeStatus, meatCheckBox.isChecked(), cheeseCheckBox.isChecked(), veggiesCheckBox.isChecked())));
}
Order.java
public final class Order {
public static int CalculatePrice(String size, boolean meat, boolean cheese, boolean veggies){
int price = 0;
if (size == "Small"){
price += 9;
}
else if (size == "Medium"){
price += 10;
}
else if (size == "Large"){
price += 11;
}
if (meat == true){
price += 2;
}
if (cheese == true){
price += 2;
}
if (veggies == true){
price += 2;
}
return price;
}
}
Обратите внимание, что метод Init () вызывается в методе onCreate () в MainActivity.java.
sizeStatus - объявленная переменнаяв MainActivity и имеет значение «Small» (строка) по умолчанию (аналогично начальной проверке RadioButton).
Приложение запускается с правильным значением $ 9, поскольку это радио-кнопка по умолчанию установлена как проверенная.После этого он отображает неправильные значения размера для каждой кнопки случайным образом:
До выбора:
http://prntscr.com/l6ke08
После выбора:
http://prntscr.com/l6ke6h
Остальная часть метода обработки добавок, добавляемых в пиццу, работает нормально.Но радио кнопки не работают.
Любая помощь будет оценена :))