Обработчик изменения ориентации экрана не работает в TabActivity

1

Я разрабатываю приложение для Android с TabHost в нем SDK 7.

Моя проблема заключается в том, что обработчик изменения ориентации экрана не выполняет эту работу. Это сценарий:

  • Экран хорошо обновляется при переключении между портретным и ландшафтным и наоборот.
  • Экран не обновляется всякий раз, когда черный экран (экранная заставка) включен или я нажимаю кнопку блокировки.

То, что я подразумеваю под "сбоем" обновления экрана:

  • Когда в ландшафтном режиме я нажимаю кнопку блокировки. После этого я разблокирую его в портретном режиме, портретный экран прекрасно обновляется. Но, как только я поворачиваюсь в альбомный режим, экран не обновляется в ландшафтном режиме. Режим пейзажа будет полностью обновлен после того, как я снова повернусь к портрету, а затем снова повернуте его к пейзажу. Когда в портретном режиме я нажимаю кнопку блокировки, ни один из сценариев сбоя, как указано выше, не происходит.

Это метод, который я использовал:

  • Я применяю: android:configChanges="keyboardHidden|orientation" в каждом sceen (оба TabActivity и каждый его ребенок)
  • Я применяю: onConfigurationChanged() на каждом дочернем экране
  • Я не использовал никаких ландшафтных разрешений (макет-макет и пригодность для рисования). Таким образом, я использую только один xml-макет для экрана (пейзаж и портрет)

Любое предложение или обходной путь для моей проблемы? Я буду благодарен и попробую каждое предложение. Благодарю вас: D

  • 0
    Сой Мария, у тебя есть какое-нибудь решение для этого?
  • 0
    Нет .. к сожалению еще нет
Теги:
screen-orientation
tabactivity

1 ответ

0

Ваше решение должно состоять в том, чтобы правильно обрабатывать изменения конфигурации. Использование configChanges - это только оптимизация для ситуаций с очень краем, но вам все равно нужно быть готовым к тому случаю, когда ваше состояние активности будет сохранено, а ваша активность уничтожена, чтобы уменьшить давление памяти.

В вашей деятельности:

@Override
public void onSaveInstanceState(Bundle outState) {
    // Put any temporary state for this Activity instance
    // into the outState bundle
}

Затем в onCreate():

@Override
public void onCreate(Bundle savedInstanceState) {
    if (savedInstanceState != null) {
        // Retrieve and reassign any state that you saved
    }
}

Также см. Раздел Обработка изменений времени выполнения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню