Доброго дня!
Имеем: 6 Button, 1 ToggleButton, 1 TextView, и массив Array. При нажатии одной из 6 кнопок, в TextView показывается информация. Если перевести ToggleButton в значение true, при нажатии на эти же 6 кнопок будет выходит противоположная информация. Все данные для TextView берутся из массива.
Теперь столкнулся с такой проблемой. Я нажимаю кнопку (например btnP) и в TextView выходит текст. После этого я нажимаю на ToggleButton и на экране ничего не происходит. Потом я снова нажимаю на эту же btnP и выводится другая информация.
Как сделать так, что бы при нажатии ToggleButton информация уже показанная в TextView сразу менялась на противоположную?
Bundle extraArray = getIntent().getBundleExtra("extraArray");
ArrayList<Integer> Array = (ArrayList<Integer>) extraArray.getSerializable("Array");
assert Array != null;
TextView.setText(Array.get(1));
iP = 1;
iL = 3;
iC = 5;
iT = 7;
iH = 9;
iW = 11;
}
@Override
public void onClick(View v) {
Bundle extraArray = getIntent().getBundleExtra("extraArray");
ArrayList<Integer> Array = (ArrayList<Integer>) extraRunes.getSerializable("Array");
assert Array != null;
switch (v.getId()) {
case R.id.btnP:
TextView.setText(Array.get(iP));
break;
case R.id.btnL:
TextView.setText(Array.get(iL));
break;
case R.id.btnC:
TextView.setText(Array.get(iC));
break;
case R.id.btnT:
TextView.setText(Array.get(iT));
break;
case R.id.btnH:
TextView.setText(Array.get(iH));
break;
case R.id.btnW:
TextView.setText(Array.get(iW));
break;
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
boolean checked = tbFlip.isChecked();
Bundle extraArray = getIntent().getBundleExtra("extraArray");
ArrayList<Integer> Array = (ArrayList<Integer>) extraRunes.getSerializable("Array");
if (checked) {
assert Array != null;
iP = 2;
iL = 4;
iC = 6;
iT = 8;
iH = 10;
iW = 12;
} else {
assert Array != null;
iP = 1;
iL = 3;
iC = 5;
iT = 7;
iH = 9;
iW = 11;
}
При клике вам нужно запоминать, какая кнопка была нажата и в onCheckedChanged
самостоятельно устанавливать изменённый текст в TextView
в соответствии с нажатой ранее кнопкой.
Плюс, переписал немного ваш код:
// Глобальные переменные
private static final int iP = 1;
private static final int iL = 3;
private static final int iC = 5;
private static final int iT = 7;
private static final int iH = 9;
private static final int iW = 11;
private List<Integer> Array;
private int clickedButtonIndex = iP;
private int checked = 0;
// Видимо внутри onCreate
Array = (List<Integer>) extraRunes.getSerializable("Array");
assert Array != null;
setText();
@Override
public void onClick (View v){
switch (v.getId()) {
case R.id.btnP:
clickedButtonIndex = iP;
break;
case R.id.btnL:
clickedButtonIndex = iL;
break;
case R.id.btnC:
clickedButtonIndex = iC;
break;
case R.id.btnT:
clickedButtonIndex = iT;
break;
case R.id.btnH:
clickedButtonIndex = iH;
break;
case R.id.btnW:
clickedButtonIndex = iW;
break;
}
setText();
}
@Override
public void onCheckedChanged (CompoundButton buttonView,boolean isChecked){
checked = tbFlip.isChecked() ? 1 : 0;
setText();
}
private void setText() {
TextView.setText(Array.get(clickedButtonIndex + checked));
}
Только в Java принято имена переменным давать с маленькой буквы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как мне сделать, что б при входе на сайт сначало проверяло inMemoryAuth, и если юзера там нету, то уже через UserDetailsServiceВот мой вариант кода:
Пишу тему на wordpressПодключил сторонние библиотеки все нормально, а мой файл со стилями не срабатывает