2015-07-28 84 views
1

重置遞減我想在一個循環,是5秒後,計數器開始從5到0 我曾嘗試這個代碼android系統

countDownTimer.cancel(); 
countDownTimer.start(); 

BT這不起作用重新計數運行遞減。 textview中的值不會重置。下面發佈是完整的代碼。 關心!

private void timee() { 

    for (int j = 5; j > 0; j--) { 
     countDownTimer = new MalibuCountDownTimer(5000, 1000); 
     if (j == 4) 
      countDownTimer.start(); 
     else { 
      countDownTimer.cancel(); 
      countDownTimer.start(); 
     } 
    } 
} 

// CountDownTimer class 
public class MalibuCountDownTimer extends CountDownTimer { 

    public MalibuCountDownTimer(long startTime, long interval) { 
     super(startTime, interval); 
    } 

    @Override 
    public void onFinish() { 
     Toast.makeText(getApplicationContext(), "Done", Toast.LENGTH_SHORT).show(); 
     // takeImage(); 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     tt.setText("Time remain:" + millisUntilFinished/1000); 
    } 
} 
+0

你想要什麼復位設置O和重新開始? –

+0

將其設置爲5,然後再次開始向下計數爲0.就像它第一次運行一樣。這就是我想要實現的循環中的每個遞減量,即重置爲5和遞減計數爲0. – user3485978

回答

0

更換你timee()方法和CountDownTimer類下面的代碼

private void timee(){ 

     MalibuCountDownTimer countDownTimer=new MalibuCountDownTimer(5000, 1000); 
      countDownTimer.start(); 

} 
public class MalibuCountDownTimer extends CountDownTimer { 

    public MalibuCountDownTimer(long startTime, long interval) { 
     super(startTime, interval); 
    } 

    @Override 
    public void onFinish() { 
     Toast.makeText(getApplicationContext(), "Done", Toast.LENGTH_SHORT).show(); 
     j++; 
     if(j<=5) 
     start(); 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     m_tv_emp.setText("Time remain:" + millisUntilFinished/1000); 
    } 
} 

注:取J所示類varieble

+0

非常感謝你,它非常完美。我沒有足夠的聲望投票給這個答案。感謝您提供快速解決方案。 – user3485978

+0

你不能投票我的答案,但你能接受我的答案嗎? –