How do you cancel CountDownTimer?
android, java, timer
Solution
You appear to be calling cancel on the Dialog, but never on the timer. You need to maintain a reference to the CountDownTimer, and call its cancel method in your onClick method.
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();
}
Problem
I have a AlertDialog with a countdown timer in it, and I have a cancel button setup and it cancels the dialog but the timer keeps going! Does anyone know how to cancel the countdown of a countdown timer? Any help would be appreciated! ``` 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(); } ```