onConfigurationChanged не получает вызов

Сегодня утром у меня возникла проблема с обработкой события onConfigurationChanged . Проблема в том, что метод, который я переопределяю, не вызывается при изменении ориентации телефона. Не получилось позвонить вообще.

Я установил android:configChanges="orientation" на активность, определенную в манифесте, как указано в документации по Android, но это не имеет значения.

Вы столкнулись с этой проблемой?

Это был мой гремлин по той же проблеме:

Внимание: Начиная с Android 3.2 (уровень API 13), «размер экрана» также изменяется, когда устройство переключается между портретной и альбомной ориентацией. Таким образом, если вы хотите предотвратить перезапуск во время изменения ориентации при разработке для уровня API 13 или выше (как объявлено атрибутами minSdkVersion и targetSdkVersion), вы должны включить значение «screenSize» в дополнение к значению «ориентация». То есть, вы должны декалировать android: configChanges = “orientation | screenSize”. Однако, если ваше приложение нацелено на уровень API 12 или ниже, ваша деятельность всегда обрабатывает это изменение самой конфигурации (это изменение конфигурации не перезапускает вашу активность даже при работе на устройстве Android 3.2 или выше).

(Из http://developer.android.com/guide/topics/resources/runtime-changes.html )

TL; DR: добавить «| screenSize» в configChanges при настройке уровня API 13+

Проблема заключалась в том, что если вы используете этот метод

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

чтобы заставить ориентацию вашей Activity в портретном режиме, вы не можете получать изменения orientation .

Таким образом, решение состоит в том, чтобы не setRequestOrientation в конкретном режиме. Но вместо этого используйте SCREEN_ORIENTATION_SENSOR.

Некоторые устройства 4.0 не вызывают onConfigurationChanged. Просто добавьте слушателя в screenSize.

 android:configChanges="orientation|screenSize" 

убедитесь, что на вашем устройстве установлено значение «Разрешение экрана»

Настройка «Вращение экрана»

  1. Убедитесь, что вы не используете android:screenOrientation в android:screenOrientation или на уровне Application .
  2. Попробуйте использовать android:configChanges="orientation|keyboardHidden" вместо этого.

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

Оказалось, что я добавил android:configChanges к android:configChanges , а не к элементу как я должен был бы!

Ну, конечно, это была моя ошибка, но мы все знаем, что все мы тратим много времени на эту глупую ошибку. Итак, я добавляю этот ответ на всякий случай, если должен быть еще один глупый программист, как я.

Macarse 100% на деньги с его вторым вариантом.

Попробуйте android:configChanges="orientation|keyboardHidden|screenSize"

У меня была точно такая же проблема, и на эмуляторе 1.6 добавлена keyboardHidden onConfigurationChanged причины onConfigurationChanged вызывались во время вращения. Удалите его, и он перестает быть вызванным.

У меня была та же проблема: onConfigurationChanged не вызывался, когда устройство меняло ориентацию, несмотря на наличие android:configChanges="orientation|keyboardHidden" в файле манифеста. Я использовал отключенный код, разделенный Deva здесь

ориентация не работает в 2.3.3?

чтобы проверить, onConfigurationChanged ли onConfigurationChanged . Не было.

После нескольких часов экспериментов я понял, что у меня есть следующие строки в файле манифеста

  

и при изменении android:targetSdkVersion="15" для android:targetSdkVersion="8" , onConfigurationChanged начал вызываться. Итак, часть манифеста, наконец, выглядела так

  

Я только что нашел, что если у вас есть:

 android:screenOrientation="landscape" 

в манифесте onConfigurationChanged () не будет вызываться …

это может быть похоже на:

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

что установка ориентации блокирует onConfigurationChanged ().

  

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

 android:configChanges="orientation|keyboardHidden|screenLayout" 

Не уверен, что это лучшее место для него, но, столкнувшись с этой проблемой, я заметил что-то интересное.

Если слушатель onConfigurationChanged () НЕ работает, то onCreate () вызывается снова каждый раз при изменении ориентации.

Если работает onConfigurationChanged () , то этот метод вызывается вместо onCreate () при изменении ориентации.

Все решения не работают. Я пытаюсь удалить свою тему в файле манифеста Android. Так странно

  remove this line />  Размер  remove this line />  

@ thanhbinh84 Дала мне идею, что может быть причиной этого.
Удаление true из моей темы в styles.xml исправлено!

Ни один из предложений не работал для меня (я ответил на собственный проект с этой проблемой), но после нескольких часов отладки я обнаружил, что если у вас есть эта строка в AppTheme styles.xml

 true 

то приложение не будет вращаться.

У меня была такая же проблема, и у меня были оба «андроида: screenOrientation» и «android: configChanges», указанные в манифесте. Когда я удаляю первый, onConfigurationChanged () вызывается при вращении. Странно, но это woks)

У вас есть android.content.res.Configuration в ваших операторах импорта? Eclipse может автоматически вставлять импорт, если вы нажмете Ctrl+Shift+O

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

  • Может ли кто-нибудь объяснить, как TrafficStats работает с магией в ОС Android?
  • Android Studio не показывает предварительный просмотр макета
  • Пример и объяснение для Android AsyncTask
  • Выполнение не выполнено для задачи: app: compileDebugJavaWithJavac в Android Studio
  • Отключить всю активность от действия пользователя
  • Android ListView с флажком и всеми интерактивными
  • Библиотека поддержки Android v7: ошибка получения родителя для элемента
  • Добавить API Карт Google V2 в fragment
  • Два TextViews бок о бок, только один для эллипсизации?
  • Невозможно установить флаг отладки в AndroidManifest.xml
  • Как обрабатывать AsyncTask во время вращения экрана?
  • Interesting Posts

    Как использовать TP-Link TL-WR1043ND в качестве беспроводного расширителя для TL-W8961ND?

    Команда Windows, которая возвращает внешний IP-адрес

    В книгах C ++ привязка массива должна быть постоянным выражением, но почему работает следующий код?

    Добавление драйвера jdbc в путь к classам

    Как я могу отключить функциональность кнопки Backspace «Назад» в Firefox?

    Как использовать valgrind для обнаружения утечек памяти?

    Windows 7 search: multiple condition "найти папки такого размера, которые не содержат этого и того"

    Могу ли я установить память 1333 МГц на ноутбук с памятью до 1066 МГц?

    Как передать необязательные параметры в TypeScript, опустив некоторые другие необязательные параметры?

    Не удалось разрешить целевое «андроид-16»

    Как разобрать CSV-файл в приложении Android?

    Что означают цвета слота для ОС материнской платы?

    Возможно ли создать изолированную среду для установки стороннего приложения?

    Как редактировать хосты в Windows 7?

    Пул streamов C ++

    Давайте будем гением компьютера.