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 回答