1

いくつかの値 onBackPressed メソッドを変更したい...そして、次のようにオーバーライドします。

@Override
public void onBackPressed() {

            final Handler backHandler = new Handler();
            backHandler.postDelayed(new Runnable() {
                public void run() {
                    exitCount = 0;
                    Log.d("exitCount", "exitCount: " + exitCount);
                }
            }, Toast.LENGTH_SHORT);

}

しかし、問題はハンドラーがすぐに投稿することです...遅延はありません。私はどこで間違っていますか?これが不十分な質問である場合は申し訳ありませんが、私はAndroidでかなり新しいです。前もって感謝します。

4

3 に答える 3

2

それはToast.LENGTH_SHORT価値がゼロだからです。選択した遅延値で定数を宣言してみてください。ここを参照

于 2012-05-04T10:35:34.063 に答える
1

ハンドラーをアクティビティの一部 (または、UI スレッドでない場合はメッセージを投稿するスレッドの一部) にし、値がゼロの Toast.LENGTH_SHORT ではなくミリ秒の遅延を使用して、即座に発生するようにします。

public class SomeActivity extends Activity {
    private Handler mHandler = new Handler();

    @Override
    public void onBackPressed() {
        mHandler.postDelayed(new Runnable() {

            @Override
            public void run() {
                Log.d("tag", "Hello, Handler!");
            }
        }, 1000); // one second
    }
}
于 2012-05-04T10:40:32.580 に答える
0

ベロコードを使用してください。うまくいくことを願っています。

runOnUiThread(new Runnable() {

            @Override
            public void run() {
                backHandler.postDelayed(new Runnable() {
                public void run() {
                    exitCount = 0;
                    Log.d("exitCount", "exitCount: " + exitCount);
                }
            }, Toast.LENGTH_SHORT);
            }
        });
于 2012-05-04T10:41:39.303 に答える