Android ListView в Activity обновляется при изменении ориентации - PullRequest
12 голосов
/ 07 апреля 2010

У меня есть Activity с ListView внутри него, и в методе onCreate Activity, у меня есть код для заполнения данных ListView, эти данные основаны на сервере, поэтому заполнение включает вызов сетевых URL-адресов.У меня есть ArrayAdapter объекта ListView в том же классе активности.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что в остальных сценариях моя активность ведет себя должным образом, но при ориентации [Портрет на ландшафтный илинаоборот »происходит потеря данных и требуются новые вызовы данных для заполнения одних и тех же старых данных, теперь это нечто, не предназначенное для кода, как я должен с этим обращаться.

Ответы [ 5 ]

23 голосов
/ 07 апреля 2010

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

Вам необходимо добавить android: configChanges = "direction" к разлочке вашей активности в вашем AndroidManifest.xml, и вам нужно переопределить onConfigurationChanged () . Я не верю, что вам нужно делать что-то особенное внутри onConfigurationChanged (), просто его реализация должна помочь.

12 голосов
/ 15 ноября 2012

Для тех, кто нацелен на API 13 или выше, "screenSize" также следует использовать. Если это ваш случай, добавьте

android:configChanges="orientation|screenSize"

в манифест Android.

Подробнее здесь .

2 голосов
/ 07 апреля 2010

AFAIK вся деятельность воссоздается при смене ориентации! То же самое верно, если вы переключаетесь на другое приложение и возвращаетесь позже. Я бы предложил хранить данные SharedPreferences или сериализовать их в XML и хранить их.

Другая возможность может состоять в том, чтобы зарегистрировать свой собственный сервис, который хранит данные в памяти, и действие копирует данные из сервиса.

1 голос
/ 07 апреля 2010

Почему бы не сохранить какие-либо данные в анализируемом объекте, и если пакет, который вы получаете в onCreate, содержит сохраненное состояние данных, переустанавливает адаптер списка? Вот хороший пример кода: http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/

0 голосов
/ 19 августа 2015
android:configChanges="orientation|screenSize"

этот код будет работать, только если у нас нет другого макета для ландшафтного режима!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...