首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计时器/沙漏不会停止

计时器/沙漏不会停止
EN

Stack Overflow用户
提问于 2019-08-16 07:37:10
回答 2查看 147关注 0票数 1

我试过用计时器做同样的事情,但仍然没有工作。

每次我尝试启动计时器时,它都会正常工作,但是当我尝试再次单击按钮并取消倒计时时,它不会停止或取消。

这是我的代码:

代码语言:javascript
复制
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");
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-23 03:02:36

试试这个,也许能帮你。

代码语言:javascript
复制
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");
            }
        }
票数 0
EN

Stack Overflow用户

发布于 2019-08-16 07:47:49

每次调用方法timer时,都会创建类Hourglass的一个新实例,并在该实例上调用startTimerstopTimer。您需要将调用hourglassstartTimer存储在方法外部,就像在字段中一样,并在该字段上调用stopTimer以获得预期的行为。

所以,你会做这样的事情:

代码语言:javascript
复制
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");
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57520634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档