2017-10-16 170 views
1

更新倒計時倒檔副

這已經得到解決。我所做的是這樣的: -

sec = (time/1000)%60; 

      if (sec == 0){ 
       min++; 
       if (min > 59){ 
        min = 0; 
        hour++; 
       } 

然後設置min = -1,以便初始0不會將min加到定時器。


我需要一個計數器,從0開始到無限長的時間,直到用戶選擇一個選項。

所以,我所做的是用一些邏輯實現CountDownTimer,以便我可以實現我想要的。

因此,我花了6小時的最大時間,直到計時器繼續。 但我遇到的問題是一旦秒達到59,然後它重置爲0,因爲我編程它,但然後它保持0和最小開始增加每秒。請幫助

這裏是我的代碼: -

public void newCountTimer(){ 
    countdowntimer = new CountDownTimer(21600000,1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 
      long time = 21600000 - millisUntilFinished; 
      sec = time/1000; 
      if (sec > 59){ 
       sec = 0; 
       min++; 
       if (min > 59){ 
        min = 0; 
        hour++; 
       } 
      } 
      if (sec < 10) { 
       if (min < 10) { 
        if (hour < 10) { 
         timer_box.setText("0" + hour + ":0" + min + ":0" + sec); 
        } else { 
         timer_box.setText("" + hour + ":0" + min + ":0" + sec); 
        } 
       } else { 
        if (hour < 10) { 
         timer_box.setText("0" + hour + ":" + min + ":0" + sec); 
        } else { 
         timer_box.setText("" + hour + ":" + min + ":0" + sec); 
        } 
       } 
      } else { 
       if (min < 10) { 
        if (hour < 10) { 
         timer_box.setText("0" + hour + ":0" + min + ":" + sec); 
        } else { 
         timer_box.setText("" + hour + ":0" + min + ":" + sec); 
        } 
       } else { 
        if (hour < 10) { 
         timer_box.setText("0" + hour + ":" + min + ":" + sec); 
        } else { 
         timer_box.setText("" + hour + ":" + min + ":" + sec); 
        } 
       } 
      } 
     } 

     @Override 
     public void onFinish() { 

     } 
    }.start(); 
} 
+0

我建議使用Calendar類,所以你不必做所有格式的文本。 – Aiapaec

回答

1

的問題是,你的sec變量總是會越來越高

sec = time/1000; 
      if (sec > 59){ 

因此秒從59到60到61 62等等,因此總是大於59.總是增加導致min在1分鐘後總是增加

我的建議是給你添加一個mod 60 r sec計算

sec = (time/1000)%60; 
      if (sec == 0){ 
       min++; 
    ...