android - 计时器/沙漏不会停止
问题描述
我用计时器尝试了同样的事情,但仍然无法正常工作
每次我尝试启动计时器时,它都会起作用,但是当我尝试再次单击按钮并取消倒计时时,它不会停止或取消。
这是我的代码:
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");
}
}
解决方案
每次调用 methodtimer
时,都会创建 class 的新实例Hourglass
,然后调用startTimer
or 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");
}
}
推荐阅读
- pytest - Pytest:将多个参数传递给夹具
- r - Global Moran's I in R 使用 spdep 包
- python-3.x - Tkinter 条件格式:如果先前的值不相等,则更改颜色?
- java - 如何在spring boot中发送多个requestparams
- c - 使用 SPI for Postgres 时如何拆分记录(用于扩展)
- node.js - BEP-20 代币交易中被低估的交易
- flutter - 我将我的 shell 切换为 fish 并且我的颤动命令被破坏了。我该如何解决?
- java - onRequestPermissionsResult 在 Android Fragment 中已弃用
- categories - 父类别
- ansible - 剧本不返回任何值