android:configChanges=“orientation” ne fonctionne pas avec des fragments
Je suis juste essayer d'adapter certaines de mes applications pour en Nid d'abeille.
La question iI suis confronté est la destruction de mon activité sur le changement d'orientation (portrait/paysage)
Quand j'étais à l'aide d'un classique de l'activité, je l'ai écrit dans le manifeste:
Mais maintenant, toutes ces lignes ne fonctionnent plus!
Est-il une solution pour que?
Mon code:
<activity android:name=".TwitterActivity" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" />
<activity android:name=".TwitterActivity$AppListFragment"
android:configChanges="keyboardHidden|orientation" />
Vous devez vous connecter pour publier un commentaire.
Basé sur mon expérience avec Honeycomb 3.0 et de la bibliothèque de compatibilité (r1).
configChange="orientation"
fonctionne avec des fragments à l'égard de la prévention de l'activité (à laquelle il est appliqué) en cours de re-créé sur un changement d'orientation. Si vous voulez lefragment
de ne pas être re-créé sur l'activité de re-création puis d'appelersetRetainInstance
dansonCreate
.À moins que je suis absent quelque chose que je n'arrive pas à obtenir votre deuxième entrée du manifeste, n'est-ce pas
AppListFragment
unFragment
? Si oui, alors pourquoi est-il répertorié comme une entrée dans votre manifeste?Voir DONC Réponse pour les nouveaux qualificatifs qui est susceptible d'être la cause de cette si vous êtes cibler sdk 13, suggère d'essayer
android:configChanges="orientation|screenSize"
screenSize
soupçon et le lien à l'autre de manière à répondre.J'ai eu un problème similaire, mais a dû faire quelques ajouts pour le faire fonctionner avec différentes versions (y compris ICS).
Dans l'application principale activité, j'ai ajouté une version légèrement différente de ce que Jason offert.
J'ai eu ce travail sur la pré-Nid d'abeille avec:
J'ai eu à faire le premier exemple pour essayer de le faire fonctionner sur toutes les versions. Je suis actuellement à l'aide de fragments et ActionBarSherlock pour assurer la compatibilité ascendante.
J'ai aussi changé la façon dont j'étais sauvegarde et rechargement:
Le code pour enregistrer l'état de l'instance méthode:
Espère que cette aide.
Jusqu'à l'API 13 il y a une nouvelle valeur à la configChanges attribut,
screenSize
Donc, si vous êtes en utilisant de grands écrans assurez-vous d'ajouter screenSize dans votre configChanges attribut:
Début avec Android 3.2 (API level 13), la "taille de l'écran" change également lorsque l'appareil commute entre le mode portrait et orientation paysage. Ainsi, si vous souhaitez empêcher l'exécution redémarre en raison de changement d'orientation lors de l'élaboration de l'API de niveau 13 ou supérieur (tel que déclaré par le minSdkVersion et targetSdkVersion attributs de), vous devez inclure le "screenSize" valeur en plus de "l'orientation" de la valeur. C'est, vous devez decalare android:configChanges="orientation|screenSize". Toutefois, si votre application cible API de niveau 12 ou moins, puis votre activité toujours les poignées de ce changement de configuration lui-même (ce changement de configuration ne redémarrez pas votre activité, même lors de l'exécution Android 3.2 ou supérieure de l'appareil).
J'ai eu ce même problème (c'est à dire, le redémarrage de l'activité), même sans les fragments.
J'ai changé:
à:
Qui empêchent l'activité de redémarrer.
Je sais que c'est assez tard pour répondre, mais j'ai récemment été confronté à ce problème et a réussi à résoudre ce Fragment de l'Activité.
1) Dans Le Manifeste,
2) Dans le fichier de Classe, remplacer la onSaveInstanceState(Bundle outState).
Thats it! Enjoy 🙂
Dans le fichier de Manifeste, à l'intérieur de l'activité ajoutez cette ligne
android:configChanges="clavier|keyboardHidden|orientation|screenSize" .
Ajouter à Manifeast.Xml
Son travail pour vous.