我已经有了这个按钮,当它被点击时会创建一个计时器。
问题是,它每次点击都会创建一个计时器。
我希望这个按钮的作用是在初始点击时创建一个计时器,然后在所有后续点击上添加五秒钟到 myTime 变量,直到计时器用完为止。
我该如何解决这个问题?
这是单击该按钮时执行的代码:
myTime = myTime + 5000
new CountDownTimer(myTime, 1000) {
public void onTick(long millisUntilFinished) {
myButton.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
myButton.setText("done!");
}
}.start();
答案 0 :(得分:0)
您需要删除计时器并重新启动它。捕获最后一个刻度的毫秒数,并将其添加5秒。缩小刻度,这样就不会浪费很多时间。
CountDownTimer myTimer = null;
long myTime = STARTING_TIME_IN_MILLIS;
...
// In the button click action performed event
if (myTimer != null) {
myTimer.cancel(); // Cancel the existing timer
myTime = myTime + 5000; // Add five seconds to the remaining time.
}
// Start a new timer with the remaining time as the starting point.
myTimer = new CountDownTimer(myTime, 100) {
public void onTick(long millisUntilFinished) {
myButton.setText("seconds remaining: " + millisUntilFinished / 1000);
// Save the remaining time
myTime = millisUntilFinished;
}
public void onFinish() {
myButton.setText("done!");
}
}.start();