【问题标题】:CountDownTimer won't stopCountDownTimer 不会停止
【发布时间】:2014-11-10 02:34:03
【问题描述】:

拜托我是 android 的初学者,我正在尝试在我的测验中添加一个 CountDownTimer,CountDownTimer 运行良好,当我在时间限制内回答所有问题时,我得到的结果如下: 正确答案:14 错误答案:16 得分:14/30

如果我没有赶上时间,我会得到这样的东西: 正确答案:14 错误答案:0 得分:14/30

在我看来这是正确的,因为在这种情况下,答案并没有错,而是没有答案

但是,如果碰巧我在时间结束之前回答了所有问题。我得到了我想要的结果,但计数不会停止并继续运行直到 0 和 0 它显示之后: 正确答案:0 错误答案:0 得分:0/30

这是计时器的代码:

mCountDownTimer = new CountDownTimer(90000, 1000) {

         public void onTick(long millisUntilFinished) {
             textViewtimer.setText("Seconds remaining: " + millisUntilFinished / 1000);
         }

         public void onFinish() {                
             marks = (correct+wrong)-wrong;              
                Intent resultintent = new Intent(getApplicationContext(),
                        ResultsActivity.class);
                startActivity(resultintent);
                mCountDownTimer.cancel();
         }
          }.start();

虽然我也在其他地方调用 Intent 部分来引导我进入乐谱页面 请问有人可以给我提示或帮助吗?

【问题讨论】:

    标签: java android arrays xml timer


    【解决方案1】:

    我认为您实施onFinish 的逻辑是错误的。 onFinish 被调用你的定时器已经完成你调用cancel

    您应该将mCountDownTimer.cancel(); 移动到最后一个问题(可能),它会自动调用onFinish

    在您当前的代码中,只有在计时器完成后才会取消您的计时器,因为您在 onFinish 中调用了 cancel

    【讨论】:

    • 谢谢您,先生,正如您所说,我刚刚将 mCountDownTimer.cancel 移至最后一个问题,现在看来它工作正常。非常感谢
    【解决方案2】:

    请使用以下代码。

    // Global variable. Put
    private boolean isRunning = true;
    
    while(isRunning)
    {
        textViewtimer.setText("Seconds remaining: " + millisUntilFinished / 1000);
        if((millisUntilFinished / 1000) <= 0)
            isRunning = false;
    }
    

    【讨论】:

    • 感谢您提供此代码,但我只是按照 Blaze Tama 的建议将 mCountDownTimer.cancel 移至我的最后一个问题,现在它工作正常,但非常感谢您,我会保留您给我的此代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2010-11-05
    • 2013-11-29
    相关资源
    最近更新 更多