1

私のプログラムでは、ブール値 (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 を再起動すると、動作するようになりました。メトロノームで値が変わる!アドバイスをくださった皆様、ありがとうございました!

4

2 に答える 2

0

正確な問題を把握することはできませんが、逆の方法で試してみてください。method1それらにandという名前を付け、 method2as-- として使用します

public void method1(View v) {
 \\code for button1
}

public void method2(View v) {
\\code for button2
}

そして、それぞれのボタンの xml で使用します。

android:onClick="method1"
android:onClick="method2"
于 2013-07-31T18:10:37.420 に答える