Потеря ориентации переключения переменных

Im новый для android. Я написал пару программ и попробовал их на своем телефоне. Когда я переключаю ориентации, то, как мой телефон, перезапускается программа. Все мои переменные получают reset. На самом деле единственным, что не является reset, является текст, который находится в текстовых представлениях редактирования. Что вызывает это? Как я могу остановить его? Я пробовал искать его в google и переполнении стека, но все, что я вижу, - это то, как ориентация вида меняется вместе. Я даже попытался в одной программе установить мои переменные с помощью метода get text, но это не работает.

Ответ 1

Когда я переключаю ориентации, то, как мой телефон, перезапускается программа.

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

Что вызывает это? Как я могу остановить его?

Это по дизайну и для его остановки, вы можете или не хотите этого делать.

Как уже упоминалось, можно указать, что вы хотите самостоятельно отрегулировать "конфигурацию" (например, ориентацию) или даже заставить только один (например, пейзаж или портрет).

Однако во многих случаях разработчик приложения может выбрать изменение макета на основе того, находится ли устройство в той или иной ориентации. Некоторые макеты могут отлично работать в портрете, но не в ландшафте (или наоборот), и цель разработанного подхода (для уничтожения/воссоздания текущего видимого Activity) предназначена для этого.

Если разработчик не хочет обрабатывать изменения конфигурации самостоятельно или принуждать определенную ориентацию, правильный способ справиться с этим - убедиться, что все данные, введенные в "изменчивые" элементы пользовательского интерфейса (такие как EditTexts), правильно сохранены и воссозданы после изменение ориентации.

Для этого важно понимать жизненный цикл Activity, поскольку использует различные методы Activity, которые вызывают в течение всего жизненного цикла для сохранения/восстановления данных.

Основное чтение...

Изменения времени выполнения

Жизненный цикл активности

Основы применения

Ответ 2

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

Ответ 3

Это по дизайну, onCreate будет вызываться при изменении ориентации. Если это нежелательно, вы можете установить, чтобы он не реагировал на изменения ориентации в AndroidManifest.xml, поэтому ваша активность не будет воссоздана, установка android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" для вашей активности ограничит ее портретным режимом.

Подробнее о настройках см. this.

Ответ 5

Лучше добавьте android:configChanges="keyboardHidden|orientation|screenSize" to AndroidManifest.xml in activity

Ответ 6

Класс ViewModel предоставляет эту функцию:

Объекты ViewModel автоматически сохраняются во время изменений конфигурации, поэтому данные, которые они хранят, сразу же становятся доступны для следующего действия или экземпляра фрагмента.

Смотрите разработчиков Android