Пока я тестировал свое приложение на Android-устройстве, превращаю свой Android-телефон из альбомной в альбомную, результаты во всех элементах списка в моем списке исчезают.
Почему?
Как управлять?
Пока я тестировал свое приложение на Android-устройстве, превращаю свой Android-телефон из альбомной в альбомную, результаты во всех элементах списка в моем списке исчезают.
Почему?
Как управлять?
Вы теряете элементы списка, потому что поведение по умолчанию для андроида во время изменения ориентации заключается в том, чтобы уничтожить вашу деятельность и воссоздать ее. Это поведение выбрано так, чтобы андроид мог воссоздать активность с новым макетом, который может использоваться, в частности, для новой ориентации.
Чтобы предотвратить исчезновение элементов списка, необходимо выполнить несколько действий. Первое, что помогает во время изменения ориентации, - это просто повторить одно и то же действие после изменения. Это можно сделать, добавив эту строку
android:configChanges="keyboardHidden|orientation"
к тегу активности в манифесте, с которым вы столкнулись. Это объясняется более подробно в этом question.
Поведение, которое вы объяснили, скорее всего, также появится, если пользователь откроет мероприятие, а затем отправит ваше приложение на задний план, и многие другие тяжелые вещи памяти извлекут ваше приложение из памяти, а затем снова просмотрят ваше приложение. Если это так, вы должны перезаписать метод onSaveInstanceState в своей деятельности. Как это объясняется в этом question.
Самый простой способ - использовать onSaveInstanceState
, объясненный в ответе Януша.
Однако, если в вашем списке много элементов, сохранение их в Bundle
в onSaveInstanceState
может замедлить процесс отдыха Activity
, который пользователи будут испытывать как отставание. Чтобы сохранить относительно большие данные, используйте onRetainNonConfigurationInstance, затем перезагрузите данные в onCreate
с помощью getLastNonConfugurationInstance
.
Попытайтесь добавить это в свою деятельность:
android: configChanges = "orientation | screenSize"
он работает для меня