Потеря переменных ориентации переключения - PullRequest
10 голосов
/ 18 марта 2012

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

Ответы [ 5 ]

8 голосов
/ 18 марта 2012

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

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

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

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

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

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

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

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

Essentialчтение ...

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

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

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

4 голосов
/ 18 марта 2012

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

2 голосов
/ 18 марта 2012

См. Этот ответ : Ищите ответ от Роберта.Это именно то, что вам нужно сделать.

2 голосов
/ 18 марта 2012

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

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

0 голосов
/ 27 апреля 2016

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

...