Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

как остановить CountDownTimer при нажатии клавиши ввод на клавиатуре

Есть таймер (прописан в OnCreate):
CountDownTimer timer; timer = new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { text_d1.setText("Осталось: "+ millisUntilFinished / 1000);
public void onFinish() { text_d1.setText("Время вышло"); } }.start();
Есть метод обработки нажатия клавиши ввод на виртуальной клавиатуре:
public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && (keyCode == KeyEvent.KEYCODE_ENTER)) { // тут разные условия, в зависимости от того, в каком edittext нажата клавиша ввод
return true; } return false; }
Логика такая:
Как только открывается активити, таймер запускается.
Таймер автоматически останавливается через 10 сек.
Как добавить условие, что таймер также останавливается, если клавиша ввод на клавиатуре нажата?


Ответ

Скорее всего вам надо просто вызвать timer.cancel() в нужном месте. Но для этого вам надо иметь доступ к переменной timer. А доступ к ней в обработчиках разных можно получить, если она будет объявлена не внутри метода onCreate, а на уровне активити. Т.е., примерно, так:
CountDownTimer timer;
public void onCreate(Bundle b) { ... }

Комментариев нет:

Отправить комментарий