2016-12-05 61 views
0

嗨我正在與倒數計時器的應用程序。點擊按鈕時,計時器將根據用戶在文本字段中的輸入啓動,當我更改文本字段的值併爲計時器啓動一個新值時,計時器將閃爍並顯示前一個倒計數值,並將這兩個值計算在內,在之前和當前的倒計時值之間閃爍。如何讓定時器忘記之前的值,並只使用當前的定時器值。Android的倒數計時器不斷迭代之前和當前值之間

我試過使用取消功能,但沒有工作,我認爲這是我的滴答功能,但我不知道它是什麼。

這裏是我的代碼:

CountDownTimer mcountDownTimer = new CountDownTimer(getmonTime(), 1000) {   // adjust the milli seconds here 

       public void onTick(long millisUntilFinished) { 

        long hr1=TimeUnit.MILLISECONDS.toHours(millisUntilFinished); 
        long sub1=hr1*60; 
        long min1=TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished); 
        long sub2=min1*60; 


        timer.setText(""+String.format("%d hr,%d min, %d sec", 
          TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 

          TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)-sub1, 
          TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)-sub2, 
            - 
            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))); 

       } 


       public void onFinish() { 

        timer.setText("0"); 
       } 



      }; 

        mcountDownTimer.start(); 






     } 


    }; 

回答

0

你可能不取消前一個。

保存CountDownTimer mcountDownTimer的實例(它BTW重命名爲mCountDownTimer) 並設置新的人之前,取消使用舊: mCountDownTimer.cancel(); ,然後才創建新的實例。 例如:

CountDownTimer mCountDownTimer; 

@Override 
public void onCreate... 
... 

if (mCountDownTimer != null) mCountDownTimer.cancel(); 
mCountDownTimer = new CountDownTimer... 
+0

非常感謝你這個工作 –

相關問題