#android #textview
#Android #textview
Вопрос:
Я создаю довольно бессмысленное приложение для Android, в котором есть две кнопки и два текстовых представления.
Для счетчика int установлено значение 0.
Первая кнопка с именем add добавляет 1 к счетчику, вторая кнопка с именем sub вычитает единицу из счетчика.
Если счетчик больше 1, отображается текстовое представление totalPlus с текущим значением счетчика.
Если счетчик равен 0 или меньше, отображается totalMinus textview с текущим значением счетчика.
В обоих случаях нерелевантный textview скрыт.
Проблема, с которой я сталкиваюсь, заключается в том, что, скажем, у меня 5, будет показан верхний счетчик, и он будет увеличиваться, когда я нажимаю кнопку. Но если я нажимаю кнопку вычитания, текущее текстовое представление скрывается, пока я не получу значение 0 или меньше, в котором отображается minusTextView. Это работает в обоих направлениях.
[код]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counter = 0;
add = (Button) findViewById(R.id.bAdd);
sub = (Button) findViewById(R.id.bSub);
totalPlus = (TextView) findViewById(R.id.totalPlus);
totalMinus = (TextView) findViewById(R.id.totalMinus);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter ;
if (counter > 1)
totalPlus.setVisibility(View.VISIBLE);
totalMinus.setVisibility(View.INVISIBLE);
totalPlus.setText("Your Total is " counter);
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter--;
if (counter <0)
totalMinus.setVisibility(View.VISIBLE);
totalPlus.setVisibility(View.INVISIBLE);
totalMinus.setText("Your Total is " counter);
}
Комментарии:
1. Ваши вызовы счетчика if не заключены в квадратные скобки, поэтому он выполняет вторую и третью инструкции, несмотря ни на что. Заключите содержимое if в квадратные скобки
Ответ №1:
Java игнорирует уровни отступов. Вам нужно использовать фигурные скобки вокруг всех трех операторов, которые вы хотите выполнить, если if
оператор пройдет.
if (counter <0) { // <-- this
totalMinus.setVisibility(View.VISIBLE);
totalPlus.setVisibility(View.INVISIBLE);
totalMinus.setText("Your Total is " counter);
} // <-- and this
Если вы не включаете эти фигурные скобки, Java рассматривает только первый оператор как часть if
конструкции; два других оператора находятся за пределами этой конструкции и будут выполняться всегда.
Комментарии:
1. Спасибо! Вы говорите, что Java игнорирует уровни отступов. Существуют ли языки, которые этого не делают?
2. Python в некоторой степени.