私のプログラムでは、ブール値 (metronomeOn と呼ばれる) は、あるボタンをクリックすると true に設定され、別のボタンをクリックすると false に設定されるはずです。私が持っている唯一のクラス (MainActivity) は Runnable を実装しています。そのため、スレッドが開始された後、run メソッドで、metronomeOn の値に応じて、コードのブロックを実行することになっています。私の問題は、metronomeOn を true に設定することになっているボタンからの onClick メソッドの後、metronomeOn の値が変更されないことです。
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 AGAIN* * ** * ** * ** * ** * ** * ** * ** * * 理由や方法はわかりませんが、Runnable を削除して Eclipse を再起動すると、動作するようになりました。メトロノームで値が変わる!アドバイスをくださった皆様、ありがとうございました!