Какое действие клавиш выполняет телефон 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 - это класс вашей деятельности (это).

Другие вопросы по тегам