繁体   English   中英

如何使用CountdownTimer onResume更新TextView?

[英]How to update TextView with CountdownTimer onResume?

我想使用倒数计时器,但是有问题。 如果我启动它,然后按“后退”按钮(将生命周期更改为onStop),然后返回活动状态-我在TextView中看不到计时器值。 但是在Logcat中,我看到了计时器的工作原理。

问题:活动返回后如何更新TextView(onResume)

更新。 虽然我不会关闭活动,但是此代码可以正常工作-很好。 但是,如果我按下“后退”按钮,TextView中将没有值。 计时器方法代码(此方法从onCreate调用):

timer = new CountDownTimer(rest + 1000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                secondsUntilFinish = Math.round(millisUntilFinished / 1000);
                String minutes = String.format("%02d",TimeUnit.SECONDS.toMinutes(secondsUntilFinish));
                String seconds = String.format("%02d",TimeUnit.SECONDS.toSeconds(secondsUntilFinish) - TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(secondsUntilFinish)));
                tvRoutineTimer.setText(getResources().getString(R.string.exercise_rest_timer, minutes, seconds));
                Log.d(LOG_TAG, "onTick = " + getResources().getString(R.string.exercise_rest_timer, minutes, seconds));
            }

            @Override
            public void onFinish() {
                tvRoutineProgress.setText(getString(R.string.routine_progress, currentStep, totalSteps));
                tvRoutineTimer.setText(getString(R.string.exercise_rest_timer, "00", "00"));
                notificationAfterRest();
                btnExerciseDone.setText(getString(R.string.button_exercise_done));
                btnExerciseDone.setEnabled(true);
                tvExercisePlaceholder.setText(getString(R.string.exercise_current_title));
            }
        }.start();

您需要从UI线程更新TextView 像这样更新您的TextView

runOnUiThread(new Runnable() {
            @Override
            public void run() {
                tvRoutineTimer.setText(getResources().getString(R.string.exercise_rest_timer, minutes, seconds));
        });   

runOnUiThread放在onTick()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM