Android: boîte de Dialogue etc restaurer après une rotation a changé
Comment restaurer la boîte de dialogue etc après la rotation de l'écran? Par exemple, elle affiche une alertDialog pour dire à l'utilisateur de l'information. ensuite, l'utilisateur de faire pivoter l'écran à une autre orientation. Comment faire pour restaurer l'alertDialog? Quelqu'un peut-il me guider pour le faire? Merci!
Ajouté plus tard:
J'ai regardé dans le code source android et de trouver ces choses:
Les boîtes de dialogue sont stockées dans mManagedDialogs
, et l'information est:
mManagedDialogs = new SparseArray<ManagedDialog>();
onSaveInstanceState
connexes:
final void performSaveInstanceState(Bundle outState) {
onSaveInstanceState(outState);
saveManagedDialogs(outState);
}
Dans saveManagedDialogs
, il a quelque chose à voir avec mManagedDialogs
.
onRestoreInstanceState
connexes:
final void performRestoreInstanceState(Bundle savedInstanceState) {
onRestoreInstanceState(savedInstanceState);
restoreManagedDialogs(savedInstanceState);
}
Dans restoreManagedDialogs
, il a quelque chose à voir avec mManagedDialogs
.
Comme vous pouvez le voir, pour des fonctionnalités avancées, vous devez effectuer la sauvegarde et la restauration de travail par vous-même. Il peut être une nuit mare lorsque vous avez des tonnes de boîtes de dialogue personnalisées. Je n'ai pas essayé le dialogue complexe (a l'entrée EdiText, listView, par exemple). De cette façon, je tiens à avertir les utilisateurs: ne Jamais faire pivoter l'écran lors de l'entrée de votre info dans la boîte de dialogue... OU, verrouillage de la rotation de manière dynamique lors de l'affichage de la boîte de dialogue.
Merci pour toutes les personnes qui m'a répondu. J'espère que mes informations vous aider aussi.
- Comment faire pour résoudre ce problème aujourd'hui: stackoverflow.com/a/15729764/842697
Vous devez vous connecter pour publier un commentaire.
L'approche que j'ai pris était de ne pas permettre à l'OS de redémarrer votre activité après le schéma de changement de configuration. Pour ce faire, ajoutez cette ligne dans les activités que vous voulez empêcher le redémarrage de votre fichier manifeste:
En option, vous pouvez gérer le changement de configuration dans le code en cas il y a quelques modifications de mise en page que vous souhaitez faire manuellement, tels que le rechargement d'un nouveau point de vue à partir de XML. Ceci est fait par l'écrasement de la onConfigurationChanged() dans votre classe d'Activité:
Edit: Ajoutée "|clavier" à la liste des modifications de configuration
Il est pris en charge pour vous aussi longtemps que vous utilisez Activité#showDialog de le montrer et de l'Activité#onCreateDialog pour la créer:
http://developer.android.com/reference/android/app/Activity.html#showDialog%28int%29
http://developer.android.com/reference/android/app/Activity.html#onCreateDialog%28int,%20android.os.Bundle%29
Ajouter dans votre activité balise dans le manifeste