Не перезагружать приложение при изменении ориентации

Мне просто не нужно ничего менять, когда экран вращается. Мое приложение отображает случайное изображение, когда оно сначала загружается, и rotation устройства не должно выбирать другое случайное изображение. Как я могу (просто) остановить это поведение?

Обычно есть три способа сделать это:

  1. Как и некоторые из предложенных ответов, вы могли бы отличить случаи создания вашей деятельности в первый раз и быть восстановлены из savedInstanceState . Это делается путем переопределения onSaveInstanceState и проверки параметра onCreate .

  2. Вы можете заблокировать активность в одной ориентации, добавив android:screenOrientation="portrait" (или "landscape" ) в в манифесте.

  3. Вы могли бы сказать системе, что вы собираетесь обрабатывать изменения экрана для себя, указав android:configChanges="orientation|screenSize" в . Таким образом, активность не будет воссоздана, но вместо этого получит обратный вызов (который вы можете игнорировать, поскольку он вам не подходит).

Лично я бы пошел с (3). Конечно, если вы заблокируете приложение к одной из ориентаций, вы также можете пойти с (2).

Ответ Xion был близок, но # 3 ( android:configChanes="orientation" ) не будет работать, если приложение не имеет уровня API 12 или ниже.

В уровне API 13 или выше размер экрана изменяется, когда меняется ориентация, поэтому это все еще приводит к уничтожению активности и ее началу при изменении ориентации.

Просто добавьте атрибут screenSize, как показано ниже:

   Размер   

Теперь, когда вы меняете ориентацию (и изменения размера экрана), активность сохраняет свое состояние и onConfigurationChanged() . При изменении ориентации будет сохраняться все, что есть на экране (т. Е. Веб-страница в Webview).

Изучил это с этого сайта: http://developer.android.com/guide/topics/manifest/activity-element.html

Кроме того, это, по-видимому, плохая практика, поэтому прочитайте ссылку ниже о том, как обрабатывать изменения времени выполнения:

http://developer.android.com/guide/topics/resources/runtime-changes.html

Вам просто нужно перейти в AndroidManifest.xml и внутри или в ваших ярлыках действий, вы должны ввести эту строку кода, как сказал кто-то там:

 android:configChanges="orientation|screenSize" 

Итак, у вас будет что-то вроде этого:

   Размер   

Надеюсь, что это работает!

  

Просто добавьте android:configChanges="orientation|screenSize" на вкладке активности файла манифеста.

Таким образом, активность не будет перезагружаться при изменении ориентации.

По моему опыту, на самом деле лучше просто справиться с изменениями ориентации, вместо того, чтобы пытаться обучать нестандартное поведение.

Вы должны сохранить изображение, которое в настоящее время отображается в onSaveInstanceState() и восстановить его правильно, когда ваше приложение снова запускается через onCreate() .

Это решение, безусловно, является лучшим рабочим. В файле манифеста добавьте

   Размер   

И в вашем classе активности добавьте следующий код

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { //your code } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { //your code } } 

add android:configChanges="keyboardHidden|orientation|screenSize" для всех тегов действий приложения в манифесте.

Просто добавьте это в свой AndroidManifest.xml

  

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

Все вышеперечисленные ответы не работают для меня. Итак, я исправил, отметив label с screenOrientation как screenOrientation ниже. Теперь все отлично

  

В явном файле добавьте к каждой активности это. Это поможет

 android:configChanges = "orientation|keyboard|keyboardHidden|screenLayout|screenSize" 

Сохраните детали изображения в onPause() или onStop() и используйте его в onCreate(Bundle savedInstanceState) чтобы восстановить изображение.

РЕДАКТИРОВАТЬ:

Более подробную информацию о реальном процессе подробно см. Здесь http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle, поскольку он отличается от сотовых, чем предыдущие версии Android.

просто используйте: android:configChanges="keyboardHidden|orientation"

Как отметил Пасерьер,

android:configChanges="orientation|screenSize"

http://animeshrivastava.blogspot.in/2017/08/activity-lifecycle-oncreate-beating_3.html

 @Override protected void onSaveInstanceState(Bundle b) { super.onSaveInstanceState(b); String str="Screen Change="+String.valueOf(screenChange)+"...."; Toast.makeText(ctx,str+"You are changing orientation...",Toast.LENGTH_SHORT).show(); screenChange=true; } 

Добавьте этот код после метода onCreate в своей деятельности, содержащей WebView

 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle state) { super.onRestoreInstanceState(state); } 
  • Настроить Android Intent.ACTION_SEND
  • При запуске приложения в режиме отладки приложение Android
  • Тип ошибки 3: Класс активности {...} не существует
  • Android, как определить элемент в списке с помощью флажка
  • Мигающий текст в представлении android
  • Моя камера Android Uri возвращает нулевое значение, но исправление Samsung на месте, помощь?
  • Android: Можно ли отображать миниатюры видео?
  • ANDROID: разделить экран на 2 равных части с 2 списками
  • Удаление fragmentа из заднего стека
  • Замена приложения «Телефон по умолчанию» на Android 6 и 7 с помощью InCallService
  • Отключить блокировку экрана
  • Interesting Posts

    Список всех файлов, соответствующих шаблону полного пути в R

    Ошибка: invalid_client нет имени приложения

    Рекурсивная блокировка (Mutex) против нерекурсивной блокировки (Mutex)

    Определить, нет ли нескольких ячеек в строке в другом выборе?

    Микрософт-мышь и центр клавиатуры не показывают мою мышь

    Как создать свою собственную цепочку сертификатов?

    Проверьте, существует ли значение Cell в столбце, а затем получите значение NEXT Cell

    Linux – установка устройства с конкретными правами пользователя

    Ffmpeg нарисовать линию от точки к точке

    Что такое «Закрытие»?

    Как отключить подписку на Facebook для Android – Facebook-android-sdk

    Как скрыть значок действия share (который используется больше всего) рядом с поставщиком акций?

    Как реализовать поиск в CustomListView на основе classа classа POJO в Android?

    Включить виртуализацию в BIOS, если мой компьютер не дает мне возможность

    Почему size_t неподписан?

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