Ключевые события в TabActivities?

Я имею TabActivity и хочу ловить и обрабатывать нажатия HOME и BACK. Где мне нужно ловить эти события?

В моем подклассе TabActivity я реализую следующее:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        // Code handling
    }

    return super.onKeyDown(keyCode, event);
}

Не сработало

Поэтому я установил точку останова на строке оператора switch. Но эта функция никогда не вызывается, нажимаю ли я громкость вверх / вниз, меню, домой или назад. Где мне нужно поймать эти KeyEvents?

5 ответов

Решение

Активность каждой вкладки обрабатывается "назад".

Оказывается, это довольно легко. Добавьте следующий код в дочернюю вкладку:

 @Override
  public void onBackPressed() {
    this.getParent().onBackPressed();   
  }

Затем в TabActivity сделайте настоящую логику:

 @Override
  public void onBackPressed() {
    // Called by children
  }

В противном случае дочерние элементы будут перехватывать и использовать событие, не уведомляя узел вкладки.

У меня была та же проблема, и я обнаружил, что приоритетное dispatchKeyEvent работает.

Пример, который можно найти здесь для нажатия кнопки назад:

http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

Попробуйте это в вашем oncreate()

setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_GLOBAL);

Я имею TabActivity и хочу ловить и обрабатывать нажатия HOME и BACK. Где мне нужно ловить эти события?

Вы никогда не сможете "справиться с прессами HOME".

Что касается BACK, вы можете использовать onKeyDown() (для Android 1.x) или onBackPressed() (для Android 2.x). Тем не менее, ваш TabActivity может быть слишком поздно Например, если у вас есть действия в качестве содержимого ваших вкладок, возможно, одна из них перехватывает нажатие НАЗАД и организует нормальную обработку (т. Е. Закрытие действия). Поскольку я избегаю таких действий как вкладки, как чума (за исключением одного примера с книгой), я не экспериментировал с обработкой кнопок BACK в этом сценарии.

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