Java 如何取消倒计时?
我有一个AlertDialog,里面有一个倒计时计时器,我有一个cancel按钮设置,它取消了对话框,但计时器一直在运行!有人知道如何取消倒计时计时器的倒计时吗?任何帮助都将不胜感激Java 如何取消倒计时?,java,android,timer,Java,Android,Timer,我有一个AlertDialog,里面有一个倒计时计时器,我有一个cancel按钮设置,它取消了对话框,但计时器一直在运行!有人知道如何取消倒计时计时器的倒计时吗?任何帮助都将不胜感激 private void timerDialog() { timerDialog = new AlertDialog.Builder(this).create(); timerDialog.setTitle("Timer"); timerDialog.setMessage("S
private void timerDialog() {
timerDialog = new AlertDialog.Builder(this).create();
timerDialog.setTitle("Timer");
timerDialog.setMessage("Seconds Remaining: "+timerNum*1000);
timerDialog.setCancelable(false);
timerDialog.setButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface aboutDialog, int id) {
timerDialog.cancel();
}
});
timerDialog.show();
new CountDownTimer(timerNum*1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timerDialog.setMessage("Seconds Remaining: "+ (millisUntilFinished/1000));
}
@Override
public void onFinish() {
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(500);
timerDialog.cancel();
}
}.start();
}
您似乎在对话框中调用“取消”,但从未在计时器上调用过。您需要维护对倒计时的引用,并在onClick方法中调用其cancel方法
private void timerDialog() {
final CountDownTimer timer = new CountDownTimer(timerNum*1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timerDialog.setMessage("Seconds Remaining: "+ (millisUntilFinished/1000));
}
@Override
public void onFinish() {
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(500);
timerDialog.cancel();
}
};
timerDialog = new AlertDialog.Builder(this).create();
timerDialog.setTitle("Timer");
timerDialog.setMessage("Seconds Remaining: "+timerNum*1000);
timerDialog.setCancelable(false);
timerDialog.setButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface aboutDialog, int id) {
timer.cancel();
}
});
timerDialog.show();
timer.start();
}
在倒计时上调用cancel()
方法