我有个问题
我正在使用handler和runnable更新我的应用程序中的计时器,在runnable中我正在更新textview,在1分钟后我想显示一些内容,在我旋转屏幕之前,一切正常,每个textview现在都为空,我不知道为什么。
我的代码:

Runnable mTimer = new Runnable() {
    @Override
    public void run() {
            textView.setText(DateFormat.format("mm:ss", timers - System.currentTimeMillis()));

        test();
            mHandler.postDelayed(this, TIME);
    }
};

你知道为什么会这样吗?

最佳答案

处理程序可能会将可运行文件传递给回收的活动。正确使用Handler就像

private Handler mHandler;
private TextView mTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mHandler = new Handler();
    setContentView(R.layout.yourView);
    mTextView = findViewById(R.id.text);
}

@Override
protected void onStart() {
    super.onStart();
    //start updating every time Activity is started
    handler.postDelayed(mTimer, oneMinuteDelay);
}

@Override
protected void onStop() {
    super.onStop();
    //make sure to remove all messages
    handler.removeCallbacksAndMessages(null);
}

关于android - Android处理程序和可运行的nullpointer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23538843/

10-11 22:17
查看更多