eclipse 倒计时完成后,如何让我的 CountDownTimer 重置?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4789122/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 15:41:11  来源:igfitidea点击:

How can I allow my CountDownTimer to reset after the countdown is finished?

androideclipse

提问by MJ93

Hey all, I'm trying to get my CountDownTimer to autoreset back to it's original time after the time reaches zero. Like an infinite loop. Here is the code I have so far (there are 3 timers in total):

大家好,我正在尝试让我的 CountDownTimer 在时间达到零后自动重置回它的原始时间。就像一个无限循环。这是我到目前为止的代码(总共有 3 个计时器):

package com.android.countdown;


import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;

public class countdown extends Activity {


    public String formatTime(long millis) {
          String output = "00:00";
          long seconds = millis / 1000;
          long minutes = seconds / 60;

          seconds = seconds % 60;
          minutes = minutes % 60;

          String secondsD = String.valueOf(seconds);
          String minutesD = String.valueOf(minutes);

          if (seconds < 10)
            secondsD = "0" + seconds;
          if (minutes < 10)
            minutesD = "0" + minutes;

          output = minutesD + " : " + secondsD;
          return output;
        }

   @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

//Declare Start/Stop button
Button btnstart = (Button)findViewById(R.id.btnstart);
Button btnstop = (Button)findViewById(R.id.btnstop);

//Declare Text fields to show time left
final TextView mCounter1TextField=(TextView)findViewById(R.id.counter1);
final TextView mCounter2TextField = (TextView)findViewById(R.id.counter2);
final TextView mCounter3TextField=(TextView)findViewById(R.id.counter3);



//Counter 1
final CountDownTimer Counter1 = new CountDownTimer(120000 , 1000) {
public void onTick(long millisUntilFinished) {
    mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished));
}

public void onFinish() {
    mCounter1TextField.setText("Finished!");
}
};

//Counter 2
final CountDownTimer Counter2 = new CountDownTimer(80000 , 1000) {
 public void onTick(long millisUntilFinished) {
     mCounter2TextField.setText("Seconds left: " + formatTime(millisUntilFinished));
 }

 public void onFinish() {
     mCounter2TextField.setText("Finished!");
 }
 };

//Counter 3
final CountDownTimer Counter3 = new CountDownTimer(10000 , 1000) {
  public void onTick(long millisUntilFinished) {
      mCounter3TextField.setText("Seconds left: " + formatTime(millisUntilFinished));
  }

  public void onFinish() {
      mCounter3TextField.setText("Finished!");
  }
  };


//Start Button
btnstart.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
  Counter1.start();
  Counter2.start();
  Counter3.start();
   }
});

//Stop Button
btnstop.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
  Counter1.cancel();
  Counter2.cancel();
  Counter3.cancel();
    }
});
}
}

I can't figure what to put inside onFinish()

我不知道在 onFinish() 里面放什么

采纳答案by SteD

Put the CounterX.start()in the respective onFinish()

放在CounterX.start()各自的onFinish()

//Counter 1 
final CountDownTimer Counter1 = new CountDownTimer(120000 , 1000) { 
public void onTick(long millisUntilFinished) {
        mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
}

public void onFinish() {
    mCounter1TextField.setText("Finished!");
    Counter1.start(); 
}
};