Мне просто не нужно ничего менять при повороте экрана. Мое приложение отображает случайное изображение при первой загрузке, и поворот устройства не должен выбирать другое случайное изображение. Как я могу (просто) остановить это поведение?
152
Screen.lockOrientation(this)
с github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/… для этого. Это позволяет разблокировать, что не манифест.Ответы:
Как правило, есть три способа сделать это:
Как показывают некоторые ответы, вы можете различить случаи, когда ваша деятельность была создана впервые и восстановлена из
savedInstanceState
. Это делается путем переопределенияonSaveInstanceState
и проверки параметраonCreate
.Вы можете заблокировать действие в одной ориентации, добавив
android:screenOrientation="portrait"
(или"landscape"
)<activity>
в свой манифест.Вы можете сказать системе, что вы хотели обрабатывать изменения экрана для себя, указав
android:configChanges="orientation|screenSize"
в<activity>
теге. Таким образом, действие не будет воссоздано, но вместо этого получит обратный вызов (который вы можете игнорировать, так как он бесполезен для вас).Лично я бы пошел с (3). Конечно, если вам подходит привязка приложения к одной из ориентаций, вы также можете использовать (2).
источник
android:configChanges="orientation|screenSize"
android:configChanges="orientation|screenSize"
работает для меня. Спасибо @Pacerierandroid:configChanges="orientation|screenSize"
значением API> = 13, потому что многие люди считают ваш ответ основным!Ответ Xion был близок, но # 3 (
android:configChanes="orientation"
) не сработает, если приложение не имеет уровня API 12 или ниже.На уровне API 13 или выше размер экрана изменяется при изменении ориентации, поэтому это все равно приводит к тому, что действие изменяется и запускается при изменении ориентации.
Просто добавьте атрибут «screenSize», как я сделал ниже:
Теперь, когда вы меняете ориентацию (и размер экрана меняется), действие сохраняет свое состояние и
onConfigurationChanged()
вызывается. Это сохранит все, что находится на экране (т.е. веб-страницу в веб-просмотре), когда ориентация изменится.Узнал об этом с этого сайта: http://developer.android.com/guide/topics/manifest/activity-element.html
Кроме того, это явно плохая практика, поэтому прочитайте ссылку ниже об обработке изменений времени выполнения:
http://developer.android.com/guide/topics/resources/runtime-changes.html
источник
android:configChanges="orientation|screenSize"
Вам просто нужно перейти к
AndroidManifest.xml
меткам и внутри или в ярлыках ваших действий, вы должны ввести эту строку кода, как кто-то там сказал:Итак, у вас будет что-то вроде этого:
Надеюсь, что это работает!
источник
Просто добавьте
android:configChanges="orientation|screenSize"
вкладку активности файла манифеста.Таким образом, активность не будет перезапущена при изменении ориентации.
источник
onSaveInstanceState()
иonCreate()
.По моему опыту, на самом деле лучше просто правильно обращаться с изменениями ориентации, а не пытаться использовать нестандартное поведение.
Вы должны сохранить изображение, которое отображается в данный момент,
onSaveInstanceState()
и правильно восстановить его приonCreate()
повторном запуске приложения .источник
android:configChanges
следует избегать использования и использовать его только в качестве крайней меры. Пожалуйста, прочтите Обработка изменений времени выполнения для получения дополнительной информации о том, как правильно обрабатывать перезапуск из-за изменения конфигурации».Это решение на сегодняшний день является лучшим рабочим. В вашем файле манифеста добавить
И в вашем классе деятельности добавьте следующий код
источник
добавить
android:configChanges="keyboardHidden|orientation|screenSize"
для всех тегов активности приложения в манифесте.источник
Просто добавьте это к вашему
AndroidManifest.xml
Я имею в виду, есть тег активности, добавьте это в качестве другого параметра. Если вам нужна книжная ориентация, измените альбомную на портретную. Надеюсь это поможет.
источник
В файле манифеста добавить к каждому виду деятельности это. Это поможет
источник
Все вышеперечисленные ответы не работают для меня. Итак, я исправил, упомянув как
label
сscreenOrientation
ниже. Теперь все нормальноисточник
http://animeshrivastava.blogspot.in/2017/08/activity-lifecycle-oncreate-beating_3.html
источник
Сохраните детали изображения в вашем
onPause()
илиonStop()
и используйте его вonCreate(Bundle savedInstanceState)
для восстановления изображения.РЕДАКТИРОВАТЬ:
Более подробная информация о реальном процессе подробно описана здесь http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle, поскольку в Honeycomb он отличается от предыдущих версий Android.
источник
просто используйте:
android:configChanges="keyboardHidden|orientation"
источник
Как отметил Пейсер,
android:configChanges="orientation|screenSize"
источник
Я не знаю, если это лучшее решение, но я опишу его здесь:
Прежде всего, вам нужен сертификат с вашим классом Приложение вашего приложения в вашем манифесте этого:
Во-вторых, в моем классе App я сделал так:
В-третьих, вам нужно установить флаг «Изменение ориентации», в моем случае я всегда устанавливаю его при вызове предыдущего действия в навигации приложения, поэтому вызывать его нужно только один раз, когда создается последнее действие.
Поэтому каждый раз, когда я меняю ориентацию моего экрана в этом контексте, я устанавливаю его каждый раз, когда он меняет этот параметр, он проверяет, есть ли изменение ориентации, и если да, он проверяет его на основании значения этого флага.
По сути, мне приходилось использовать его всякий раз, когда я делал асинхронный запрос на модификацию, который он вызывал каждый раз, когда менялась ориентация, постоянно сбой приложения:
Не знаю, самое ли это элегантное и красивое решение, но, по крайней мере, здесь оно функционально :)
источник
Добавьте этот код после
onCreate
метода, в вашей деятельности, содержащейWebView
источник