2011-11-02 97 views
0

好吧,这是令人讨厌的! 我不能真正停止计时器,只能暂停计时器... 我有一个函数,使x每次调用函数时都会成为一个新的计时器。我需要的是有时会停止计时器并重新开始。问题是,如果我使用cancel,它会暂停它,当我调用函数来创建一个新函数时,它实际上会继续那个已经暂停的函数!请帮助我,让我可以睡...定时器不停止

public void countdown(){ 


     final TextView textic = (TextView) findViewById(R.id.textView2); 

     x = new CountDownTimer(30000, 1000) { 

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

     } 

     public void onFinish() { 
      textic.setText("Time expired"); 
      idiot(); 
      getfirstquestion(); 

     } 
     }; 

     x.start(); 
    } 

这是功能,和X是decleared截至beginning.What一个全局变量需要的是:当我按下一个按钮(甚至100倍)使当前计时器停止,并开始一个真正的新计时器(如在该函数中)。

回答

2

只需在创建新的之前取消旧的。

public void countdown(){ 
    final TextView textic = (TextView) findViewById(R.id.textView2); 

    if (x != null) { 
     x.cancel(); 
    } 

    x = new CountDownTimer(30000, 1000) { 

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

    } 

    public void onFinish() { 
     textic.setText("Time expired"); 
     idiot(); 
     getfirstquestion(); 

    } 
    }; 

    x.start(); 
} 
+0

非常感谢 – user1015311