编辑完我的代码之后我已经做了这个,它会在单击重置按钮时重新启动计时器,但是当另一个计时器运行时它会重新启动它,因此它看起来好像一次有多个计时器,问题&#34 ;如果计时器已经启动,如何重置计时器"如果已启动,则停止重置然后重新开始。
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
counter = 0;
tx.setText(Integer.toString(counter));
b.setEnabled(true);
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
tx2.setText("Time remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
tx2.setText("Finished!");
b.setEnabled(false);
}
}.start();
}
});
答案 0 :(得分:1)
而不是新的CountDownTimer,在您的活动中编写您自己的一个。让它成为全球:
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
//reset button
tx2.setText("Finished!");
b.setEnabled(false);
}
@Override
public void onTick(long millisUntilFinished) {
//do what ever You want
tx2.setText("Time remaining: " + millisUntilFinished / 1000);
}
}
然后在你的活动中:
MyCountDownTimer timer=null;
long startTime = 10000;
long interval = 1000;
timer = new MyCountDownTimer(startTime, interval);
在您需要的地方启动您的计时器:
timer.start();
需要时取消:
timer.cancel();
然后重新开始:
timer = new MyCountDownTimer(startTime, interval);
timer.start();