Какое действие клавиш выполняет телефон Nexus при нажатии кнопки "Назад"?
Мне интересно, какое действие KeyEvent вызывается, когда пользователь нажимает маленький перевернутый треугольник в телефоне Nexus, когда открыта программная клавиатура.
В обычном режиме Nexus выглядит так, и нормальный код работает нормально: Nexus без клавиатуры
Но когда клавиатура всплывает, это выглядит так, и код не работает:
1 ответ
Для Android API до 5:
@Override
public void onBackPressed() {
// your code.
}
Для Android до API 5 вы должны использовать это:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// your code
return true;
}
return super.onKeyDown(keyCode, event);
}
Пожалуйста, обратитесь к тому, как обрабатывать кнопку назад в деятельности
РЕДАКТИРОВАТЬ:
Этот метод работает, только если клавиатура скрыта..
в соответствии с этим ответом: Обнаружить нажатие клавиши назад - когда клавиатура открыта
Лучшее действие для реализации - dispatchKeyEventPreIme. Примером является:
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
Log.d(TAG, "dispatchKeyEventPreIme(" + event + ")");
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
KeyEvent.DispatcherState state = getKeyDispatcherState();
if (state != null) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getRepeatCount() == 0) {
state.startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP
&& !event.isCanceled() && state.isTracking(event)) {
mActivity.onBackPressed();
return true;
}
}
}
return super.dispatchKeyEventPreIme(event);
}
Где mActivity - это класс вашей деятельности (это).