Modification de l'orientation, perte de tous mes éléments de liste
Alors que j'ai testé mon application sur un Appareil Android en tournant mon téléphone Android de paysage à portrait, les résultats de tous les éléments de la liste dans ma liste vue sont en train de disparaître.
Pourquoi?
Comment gérer?
source d'informationauteur soclose
Vous devez vous connecter pour publier un commentaire.
Vous sont en train de perdre les éléments de la liste parce que le comportement par défaut d'android lors de changement d'orientation est de détruire votre activité et de le recréer. Ce comportement est choisi pour permettre android pour recréer de l'activité avec une nouvelle mise en page qui peut être utilisée notamment pour la nouvelle orientation.
Pour éviter que votre liste des éléments de la disparition il y a plusieurs chose à faire.
La première chose qui aide lors de changement d'orientation est tout simplement de réutiliser la même activité après le changement. Cela peut être fait grâce à l'ajout de cette ligne
à l'activité de la balise dans votre manifeste, vous rencontrez le problème. Ceci est expliqué plus en détail dans ce question.
Le comportement vous a expliqué risquent d'apparaître si l'utilisateur ouvre l'activité et l'envoie ensuite votre demande à l'arrière-plan n'beaucoup d'autres de la mémoire du lourd pour obtenir votre application supprimée de la mémoire et les réinterprète à votre application.
Si c'est le cas, vous devez remplacer la méthode onSaveInstanceState en activité.
Comment ceci est expliqué dans ce question.
La façon la plus simple est d'utiliser
onSaveInstanceState
a expliqué dans Janusz réponse.Cependant, si il ya de nombreux éléments dans votre liste, de les enregistrer dans un
Bundle
dansonSaveInstanceState
pourrait ralentir leActivity
loisirs processus, que les utilisateurs seraient expérience comme un décalage. Pour enregistrer relativement important de données, l'utilisation onRetainNonConfigurationInstancepuis de recharger les données dansonCreate
avecgetLastNonConfugurationInstance
.Essayez d'ajouter ceci dans votre activité:
android:configChanges="orientation|screenSize"
il fonctionne pour moi