2015-07-28 81 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

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