onKeyDown не вызывается при открытии диалога

У меня есть диалоговое окно с настраиваемым представлением, которое появляется при нажатии элемента списка. Я отменяю onKeyDown функция моей активности, чтобы увидеть, был ли диалог, когда была нажата кнопка назад, но если диалог вверх onKeyDown не вызывается.

Если я нажимаю кнопку "Назад" после того, как диалоговое окно исчезло, оно вызывается без проблем, но мне нужно знать, была ли нажата кнопка "Назад", когда открывалось диалоговое окно, если мне нужно будет снова открыть его, если устройство повернуто.

Я искал немного, и кажется, что это как-то связано с вызовом setContentView для моего собственного диалогового макета, но я не нашел, как получить okKeydown работать с этим диалогом

1 ответ

Решение

Для диалогов у нас есть отдельный setOnKeyListener, так что попробуйте ниже код и....... и вы можете отслеживать нажатие любой клавиши, как я сделал...

  • keyCode == KeyEvent.KEYCODE_CAMERA
  • keyCode == KeyEvent.KEYCODE_SEARCH и т. д.

          mProgressDialog.setOnKeyListener(new Dialog.OnKeyListener() {
    
                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    if ((keyCode == KeyEvent.KEYCODE_CAMERA)) {
                        return true;
                    }
                    if ((keyCode == KeyEvent.KEYCODE_SEARCH)) {
                        return true;
                    }
                    return false;
                }
            });
    
Другие вопросы по тегам