Fragments Android recréés lors du changement d'orientation
Je suis le développement d'une application qui, fondamentalement, a une ActionBar. Quand mon application démarre, l'Activité crée les fragments et les associe à chaque onglet, donc quand je switch-je obtenir différents points de vue.
Les problèmes surviennent lorsque j'essaie de faire pivoter l'appareil. Après quelques difficultés, j'ai remarqué que Android automatiquement recrée précédemment ajouté fragments comme ceci:
SummaryFragment.onCreate(Bundle) line: 79
FragmentManagerImpl.moveToState(Fragment, int, int, int) line: 795
FragmentManagerImpl.moveToState(int, int, int, boolean) line: 1032
FragmentManagerImpl.moveToState(int, boolean) line: 1014
FragmentManagerImpl.dispatchCreate() line: 1761
DashboardActivity(Activity).onCreate(Bundle) line: 864
...
et puis j'ai recréer les fragments comme d'habitude. J'ai donc le "vrai" fragments que je m'attends à fonctionner correctement et de leurs "caché" de l'Androïde créé homologues qui font de mon application crash. Comment puis-je éviter ce problème? J'ai déjà essayé d'appeler setRetainInstance(false) dans le SummaryFragment.
Merci
source d'informationauteur Luke47
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de vérifier pour un savedInstanceState [edit: dans votre activité parent], et si elle existe, ne pas se créer de fragments.
Lorsque vous créez votre activité, assurez-vous qu'il n'existe pas déjà. Si elle existe, ne rien faire...Android va recréer pour vous.
Si vous avez la même interface utilisateur(pas de page spécifique à-terre des fichiers) pour les deux orientations, vous pouvez définir
android:configChanges="keyboardHidden|orientation"
de l'activité dans votre fichier manifest.Si ce n'est pas veuillez fournir le code source où vous êtes en train d'ajouter les fragments d'onglets, et je vais essayer de vous aider avec des améliorations.
Je ne suis pas sûr si il y a une meilleure solution, mais c'est ce que j'ai fait en dernier programme.
Lorsqu'un fragment est créé automatiquement par le système à changement d'orientation et si vous voulez garder une trace d'eux dans des activités d'accueil, les attraper dans l'activité de l'hôte du
OnAttachFragment()
méthode. Et ils obtiennent les arguments par défaut, de sorte que vous pouvez utiliser pour savoir quelles fragment de il est.