В моей программе логическое значение (называемое metronomeOn) должно быть установлено равным true нажатием одной кнопки, а false - кликом другой кнопки. Единственный класс, который у меня есть (MainActivity), реализует Runnable. Поэтому, после начала потока, в методе run, в зависимости от значения metronomeOn, он должен выполнить блок кода. Моя проблема заключается в том, что после метода onClick от кнопки, которая должна установить metronomeOn в значение true, значение metronomeOn не изменяется.Android: значение boolean не меняется?
ButtonListeners (метод вызывается в OnCreate):
public void ButtonListeners() {
bStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
metronomeOn = true;
}
});
bStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentBeatIndex = 1;
tvCurrentBeatIndex.setText("");
metronomeOn = false;
}
});
}
Метод запуска:
if (metronomeOn) {
tvBpm.setText("IN IF STATEMENT");
//other code...
}
Я абсолютно не знаю, почему metronomeOn не переключающий значения. Я знаю, что запускается метод run, а metronomeOn всегда изменяется в onCreate и onDestroy. Любые идеи, почему это не работает? Заранее спасибо!!
EDIT * * ** * ** * ** * ** * ** * ** * ** * ** * ** Я избавился от метода run и реализации класса Runnable, поэтому проблем там нет, но metronomeOn все равно всегда возвращает false.
EDIT СНОВА * * ** * ** * ** * ** * ** * ** * ** * * I не знаю, почему и как, но после удаления Runnable и перезапуска Eclipse он теперь работает. MetronomeOn меняет стоимость! Спасибо всем, кто дал совет!
Можете ли вы войти в систему и обеспечить, чтобы «ButtonListeners» вызывается? (Вы можете использовать pastebin.com весь свой класс.) «Активность реализует Runnable» запахи вонючие. – ataulm
Можете ли вы поместить код, где вы объявили логическое? – JNL