Android 计时器/沙漏不会停止
我试着用定时器做同样的事情,但仍然不起作用 每次我试着启动计时器,它都能工作 但当我再次点击按钮取消倒计时时, 它不是停止或取消 这是我的密码:Android 计时器/沙漏不会停止,android,countdowntimer,hourglass,Android,Countdowntimer,Hourglass,我试着用定时器做同样的事情,但仍然不起作用 每次我试着启动计时器,它都能工作 但当我再次点击按钮取消倒计时时, 它不是停止或取消 这是我的密码: 公共作废计时器(最终按钮btnBooking){ 沙漏沙漏=新沙漏(50001000){ @重写Timertick上的公共void(剩余时间很长){//更新UI setText(“取消”+(“+timeRemaining+”); } @重写公共void onTimerFinish(){//计时器已完成 如果(isBooking){ btnBooking
公共作废计时器(最终按钮btnBooking){
沙漏沙漏=新沙漏(50001000){
@重写Timertick上的公共void(剩余时间很长){//更新UI
setText(“取消”+(“+timeRemaining+”);
}
@重写公共void onTimerFinish(){//计时器已完成
如果(isBooking){
btnBooking.setText(“取消”);
}
listener.startBooking();
}
};
如果(!isBooking){
沙漏。startTimer();
isBooking=true;
}否则{
isBooking=false;
hourglass.stopTimer();
btnBooking.setText(“书”);
}
}
每次调用方法timer
,都会创建类Hourglass
的新实例,并在此基础上调用startTimer
或stopTimer
。您需要将调用的startTimer
沙漏存储在方法外部,就像在字段中一样,并在该方法上调用stopTimer
,以获得预期的行为
所以,你可以这样做:
私有沙漏沙漏;
公共无效计时器(最终按钮btnBooking){
如果(!isBooking){
沙漏=新沙漏(50001000){
@重写Timertick上的公共void(剩余时间很长){//更新UI
setText(“取消”+(“+timeRemaining+”);
}
@重写公共void onTimerFinish(){//计时器已完成
如果(isBooking){
btnBooking.setText(“取消”);
}
listener.startBooking();
}
};
沙漏。startTimer();
isBooking=true;
}否则{
isBooking=false;
hourglass.stopTimer();
btnBooking.setText(“书”);
}
}
每次调用方法timer
,都会创建类Hourglass
的新实例,并在此基础上调用startTimer
或stopTimer
。您需要将调用的startTimer
沙漏存储在方法外部,就像在字段中一样,并在该方法上调用stopTimer
,以获得预期的行为
所以,你可以这样做:
私有沙漏沙漏;
公共无效计时器(最终按钮btnBooking){
如果(!isBooking){
沙漏=新沙漏(50001000){
@重写Timertick上的公共void(剩余时间很长){//更新UI
setText(“取消”+(“+timeRemaining+”);
}
@重写公共void onTimerFinish(){//计时器已完成
如果(isBooking){
btnBooking.setText(“取消”);
}
listener.startBooking();
}
};
沙漏。startTimer();
isBooking=true;
}否则{
isBooking=false;
hourglass.stopTimer();
btnBooking.setText(“书”);
}
}
试试这个,可能会对你有所帮助
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");
}
}
试试这个,也许对你有帮助
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");
}
}