Подтвердить что ты не робот

Android ListView в действии становится обновленным при изменении ориентации

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

android:configChanges="orientation|screenSize"

в манифест Android.

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

android:configChanges="orientation|screenSize"

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