【问题标题】:Timer may not have been Initialised?计时器可能尚未初始化?
【发布时间】:2017-05-02 13:52:04
【问题描述】:
public void reverseTimer(int Seconds,final TextView tv,final Button button,final TextView txt2){

    final CountDownTimer CountDownTimer1 = new CountDownTimer(Seconds* 1000+1000, 1000) {

        public void onTick(long millisUntilFinished) {
            int seconds = (int) (millisUntilFinished / 1000);
            int minutes = seconds / 60;
            seconds = seconds % 60;
            tv.setText("Time : " + String.valueOf(minutes)
                    + ":" + String.valueOf(seconds));
        }
        public void onFinish() {
            if(score > highscore)
                sethighscore(txt2);
            tv.setText("Completed");
            Reset(tv,button,txt2);
        }
    }.start();
}

我有一个将“点击”设置为 true 的重置按钮和一个在按下重置按钮或计时器完成时调用的重置函数,我尝试将以下条件添加到“OnTick”:

if(clicked == true)
{
    CountDownTimer1.cancel();
}

但是我得到它可能没有被初始化的错误我知道这意味着什么我只是不明白在哪里初始化它以及如何初始化它?还是有其他方法可以在此功能之外停止它?

【问题讨论】:

  • 我认为您需要提供更多背景信息。相对于定时器代码的复位代码在哪里?
  • 发布一些 logcat

标签: java android


【解决方案1】:

您正在创建 CountDownTimer 的抽象子类。 onTickonFinish 中的所有代码都属于那个对象。
在这些方法中,您可以使用this 引用该对象。所以你可以简单地做:

this.cancel();

甚至只是:

cancel();

【讨论】:

    猜你喜欢
    • 2012-03-25
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多