Не удалось поймать событие кнопки андроида

Я пытаюсь поймать событие кнопки «Назад» для Android. Я знаю, что об этом уже есть много, но мой код не работает в качестве приведенных примеров. Вот мой фрагмент кода, чтобы зафиксировать событие:

@Override public boolean onKeyDown(int keyCode, KeyEvent event){ if(keyCode == KeyEvent.KEYCODE_BACK){ Log.d(TAG, "back key captured"); return true; } return super.onKeyDown(keyCode, event); } 

Я также пробовал это:

 @Override public void onBackPressed(){ Log.d(TAG, "in onBackPressed"); finish(); } 

Результат LogCat, который был запущен, не появляется. Кто-нибудь знает причину этого?

Благодарю.

Другой метод заключается в переопределении метода public void onBackPressed() . Это проще и проще.

Чтобы получить событие клавиатуры, View должен иметь фокус. Чтобы заставить это использовать:

 view.setFocusableInTouchMode(True); view.requestFocus(); 

Отображается ли мягкая клавиатура? Это представление сначала захватит задний ключ, чтобы отбросить его, прежде чем ваш собственный код сможет его обработать.

Это работает для меня

 private long lastBackPressTime = 0; @Override public void onBackPressed() { if (this.lastBackPressTime < System.currentTimeMillis() - 4000) { Toast.makeText(this, R.string.backButtonWarning, 4000).show(); this.lastBackPressTime = System.currentTimeMillis(); } else { super.onBackPressed(); } } 

В последнее время я экспериментировал с ОГРОМНЫМ количеством проблем из-за плагина ADT, которые производят файл ресурса te apropiate (R). Итак, дважды проверьте, что вы очистили свой проект

Моя ситуация может быть необычной, но у меня было то же самое поведение, поэтому я думал, что поделюсь с классом! Причина заключалась в том, что внутри моего события onResume () для Activity я начал новую деятельность. Эта деятельность заканчивалась, прежде чем она когда-либо отображала какой-либо пользовательский интерфейс, но это означало, что «onResume» для моей основной деятельности постоянно вызывался всякий раз, когда суб-активность завершалась, а события кнопки «Назад» все, казалось, исчезали в под-активности.

Вот как я реализовал обработку события с нажатой клавишей.

 /** * onKeyDown method * * Executes code depending on what keyCode is pressed. * * @param int keyCode * @param KeyEvent * event KeyEvent object * * @return true if the code completes execution, false otherwise * */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: Log.d(TAG, "back key captured"); this.onBackPressed(); //You could also use this.moveTaskToBack(true) to return to the Home screen return true; default: return super.onKeyDown(keyCode, event); } }// end onKeyDown 
Intereting Posts
Android-эмулятор (Android Studio) Кнопка «Главная» не работает и дает logcat – I / WindowManager: не запускается активность, поскольку выполняется настройка пользователя В чем разница между минимальной версией SDK / целевой версией SDK и компиляцией SDK-версии? Является ли просмотр в памяти телефона андроида возможным с помощью phoengap? Ошибка: не удалось найти цель с хэш-строкой 'android-21' В чем разница между фабрикой LayoutInflater и Factory2 Изображение в виджет Как установить стиль шрифта полужирным, курсивом и подчеркнутым в Android TextView? Возможно ли установить агент пользователя в Chrometab в андроид Цвет градиента для линейной диаграммы внутри AchartEngine Лучший способ справиться с повторяющейся ошибкой ввода Amazon Kindle Fire и файл .apk Будет ли LibGDX поддерживать 3D как Unity3D Изменить шрифт с уведомлением об изменении текста в android Android NDK, использовать функции из скомпилированной библиотеки .so в другом проекте Android NDK Android – затмение FileExplorer как root