2011-11-02 103 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