我试过用计时器做同样的事情,但仍然没有工作。
每次我尝试启动计时器时,它都会正常工作,但是当我尝试再次单击按钮并取消倒计时时,它不会停止或取消。
这是我的代码:
public void timer(final Button btnBooking) {
Hourglass hourglass = new Hourglass(5000, 1000) {
@Override public void onTimerTick(long timeRemaining) { // Update UI
btnBooking.setText("CANCEL " + "(" + timeRemaining + ")");
}
@Override public void onTimerFinish() { // Timer finished
if (isBooking) {
btnBooking.setText("CANCEL");
}
listener.startBooking();
}
};
if (!isBooking) {
hourglass.startTimer();
isBooking = true;
} else {
isBooking = false;
hourglass.stopTimer();
btnBooking.setText("BOOK");
}
}发布于 2019-08-23 03:02:36
试试这个,也许能帮你。
if (!isBooking) {
hourglass = new Hourglass(5000, 1000) {
@Override
public void onTimerTick(long timeRemaining) { // Update UI
btnBooking.setText("CANCEL " + "(" + timeRemaining / 1000 + ")");
}
@Override
public void onTimerFinish() { // Timer finished
if (isBooking) {
btnBooking.setText("CANCEL");
listener.startBooking();
}
}
};
hourglass.startTimer();
isBooking = true;
} else {
if (!hourglass.isRunning()) {
dialogUtils.askDialog("Are you sure you want to cancel?", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
listener.stopBooking();
isBooking = false;
hourglass.stopTimer();
btnBooking.setText("BOOK");
}
}, null);
} else {
isBooking = false;
hourglass.stopTimer();
btnBooking.setText("BOOK");
}
}发布于 2019-08-16 07:47:49
每次调用方法timer时,都会创建类Hourglass的一个新实例,并在该实例上调用startTimer或stopTimer。您需要将调用hourglass的startTimer存储在方法外部,就像在字段中一样,并在该字段上调用stopTimer以获得预期的行为。
所以,你会做这样的事情:
private Hourglass hourglass;
public void timer(final Button btnBooking) {
if (!isBooking) {
hourglass = new Hourglass(5000, 1000) {
@Override public void onTimerTick(long timeRemaining) { // Update UI
btnBooking.setText("CANCEL " + "(" + timeRemaining + ")");
}
@Override public void onTimerFinish() { // Timer finished
if (isBooking) {
btnBooking.setText("CANCEL");
}
listener.startBooking();
}
};
hourglass.startTimer();
isBooking = true;
} else {
isBooking = false;
hourglass.stopTimer();
btnBooking.setText("BOOK");
}
}https://stackoverflow.com/questions/57520634
复制相似问题