Я разрабатываю приложение, которое при нажатии кнопки открывает диалоговое окно с кнопками ОК и Отмена.
Работает нормально.
Когда пользователь нажимает кнопку "Назад", я обрабатываю это следующим образом
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
}
return super.onKeyDown(keyCode, event);
}
Но вышеуказанный способ не вызывается. Как мне с этим справиться?
Ответы:
источник
Dialog
;finish()
уже позаботится об этом. Кроме того, этот метод, вероятно, должен вернуться,false
чтобы иметь возможность захватывать ключевые события в другом месте&& event.getAction() == KeyEvent.ACTION_UP
к ответу. Без него блок кода будет выполнен дважды. (Клавиша ВНИЗ и клавиша ВВЕРХ). В этом примере это не так важно, но для других действий, кроме finish (), это может быть очень важно.dialog.dismiss()
произойдет утечка памяти.finish()
иdialog.dismiss()
следует поменять местами в приведенном выше коде.Похоже, вы хотите установить OnCancelListener при создании Dialog. Выглядит это так:
источник
Вам нужно переопределить
OnCancel
метод. Этот метод вызывает нажатие клавиши «Назад». Вот код, который мне идеально подходит.Надеюсь, это поможет вам, и примите это, если это будет полезно для вас.
Спасибо..
источник
Попробуй это
источник
Если вы используете DialogFragment, из того, что я могу сказать, правильный способ сделать это - переопределить onCancel ()
Я заметил,
setOnCancelListener
что не работает, иsetOnKeyListener
работает, но для меня есть забавный побочный эффект: он проглатывает все клавиши, если в вашем диалоге есть текст редактирования.источник
это потому, что, когда ваш диалог открывается, ваше окно переходит к диалогу. Итак, теперь вам нужно заняться
key
своим диалогом.источник
key
в диалоговом окне.Переопределите метод
onBackPressed()
в вашем собственном диалоге и используйте его в своем коде:Использование:
источник
Этот код работает:
источник