Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 计时器/沙漏不会停止_Android_Countdowntimer_Hourglass - Fatal编程技术网

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");
            }
        }