onConfigurationChanged не вызывается в первый раз - PullRequest
4 голосов
/ 18 апреля 2011

У меня проблема с попыткой перехватить событие onConfigurationChanged. Это сценарий:

  1. Начинается действие A (слушает onConfigurationChanged)
  2. Телефон повернут в ландшафтный режим (onConfigurationChanged вызывается). Начать деятельность Б.
  3. Начинается действие B (слушает onConfigurationChanged) (LANDSCAPE)
  4. Действие B поворачивается обратно к портрету (событие onBackPressed возбуждено). Деятельность B уничтожается, и A вызывается обратно.
  5. Деятельность A возобновляется
  6. Телефон повернут в ландшафтный режим. onConfigurationChanged на этот раз не вызывается.
  7. Телефон повернут в портретный режим. onConfigurationChanged называется.
  8. Телефон повернут в ландшафтный режим. onConfigurationChanged называется.

Почему шаг 6 не вызывает onConfigurationChanged событие? это не имеет смысла вообще. Вы знаете, в чем может быть проблема?

Ответы [ 3 ]

1 голос
/ 23 ноября 2012

У меня та же проблема, я обновляю пользовательский интерфейс onResume(), чтобы исправить ее.

0 голосов
/ 09 апреля 2015

Я столкнулся с той же проблемой и застрял в ней более недели. Затем я подготовил образец приложения с tabHost и воспроизвел ту же проблему в примере приложения. Поработав с этим, я обнаружил, что это ошибка Android Tab Tab. Итак, я перенес tabHost в FragmentTabHost и обнаружил, что проблема исчезла.

Симуляция проблемы с tabHost:

Пусть есть две вкладки, то есть A и B

Симулятор 1 (Возникла ошибка)

  1. Прибытие на A в портретном режиме
  2. Переход к B в портретном режиме
  3. Повернуть B в ландшафт
  4. Вернуться к A в ландшафтном режиме.
  5. Повернуть A в портрет (метод onConfigChanged tabActivity запускается. Но onConfigChanged of A действие не запускается)

Simulation 2 (Работает нормально)

  1. Прибытие на A в портретном режиме
  2. Перейдите к B в портретном режиме (продолжайте вращаться как хотите, но остановитесь в портретном режиме)
  3. Назад в режим A в портретном режиме.
  4. Поворот A в альбомную ориентацию (оба метода onConfigurationChanged для tabActivity и A активируются)

Сводка: Если вы вернетесь к экрану в той же ориентации, что и у вас, то будет вызван оба метода onConfigurationChanged ().

0 голосов
/ 23 октября 2013

У меня была точно такая же проблема. Я до сих пор не понимаю такое поведение системы Android, но вы можете использовать onOrientationChanged из OrientationEventListener вместо обработки изменений конфигурации.

См. Этот ответ (пример не идеален, но показывает путь): https://stackoverflow.com/a/13844242/554281

...