Configuration modifiée (changement d'orientation) et la destruction des Activités - est-ce la façon dont il est censé fonctionner?

J'ai lu sur comment Android gère "les modifications de configuration" - par la destruction de l'Activité.

Je veux vraiment savoir à partir d'Android Équipe pourquoi c'est. J'aimerais avoir une explication sur la façon dont le raisonnement est allé, parce que je ne la comprends pas. Le fait qu'il agit de cette façon, nous met tous, comme je le vois, dans un monde de douleur.

Permet de supposer que vous avez une Activité qui présente un certain nombre de EditText:s, cases à cocher, etc. Si un Utilisateur commence à remplir ce formulaire avec le texte/données, puis change d'orientation (ou d'obtenir un coup de Téléphone), puis toutes les entrées de l'Utilisateur est allé. Je n'ai pas trouvé une manière de préserver l'état. Qui nous oblige à faire extrêmement douloureux de codage afin de ne pas perdre toutes les données.

Que je vois, vous avez besoin d'un autre "non-Activité" de la classe (ou "la valeur de tenue de classe", peut-être) qui comporte un champ pour chaque "élément de formulaire" (EditText, case à cocher, etc).

Pour chaque "élément de formulaire" qui existe, vous devrez joindre à un Événement comme "onChanged" (ou onTextChanged ou quelque chose comme ça) qui met à jour le champ correspondant dans le "la valeur de tenue de classe", pour vous assurer que pour chaque caractère que vous tapez (dans un EditText par exemple) est enregistré à la fois.

Peut-être vous pouvez utiliser de l'auditeur (comme "onDestroy" ou quelque chose) et puis remplissez la valeur de tenue de classe avec des données.

J'ai aussi trouvé ce morceau de l'info où ils parlent de l'aide Bundle, onSaveInstanceState et onRestoreInstanceState, mais ce que cela signifie que le programmeur a pour enregistrer manuellement et ensuite, plus tard, de remettre les valeurs à la bonne place? Cette approche est un peu moins messier que mes suggestions ci-dessus, mais encore pas très gentil.

Quelqu'un peut me dire que je suis totalement faux et que ce n'est pas comment il fonctionne et que j'ai totalement raté une information capitale?

  • Le framework gère automatiquement la sauvegarde et la restauration de certains de l'etat; le reste que vous avez à faire vous-même des méthodes comme le onPause et onResume. Je sais que c'est dur à obtenir autour de votre tête au premier abord, mais vous avez vraiment besoin de connaître le cycle de vie d'une Activité: developer.android.com/guide/topics/fundamentals.html#actlife les modifications de Configuration, comme la rotation de l'écran faut tout recommencer parce qu'ils ont complètement re-mise en page de l'écran. Je suis sûr que quelqu'un va venir et laisser une réponse adéquate trop. 🙂
  • Le haut de réponse à la question précédente, vous avez rejoint le résume assez bien. Meilleure façon de voir ce qui est ou n'est pas enregistré lors de la rotation ou d'un appel téléphonique, etc c'est de l'essayer dans l'émulateur!
  • Je n'obtiens pas pourquoi re-mise en page a rien à faire avec les données contenues dans les Vues. Android Équipe et tout le monde est toujours de parler sur la façon dont il est important de la séparation de l'interface graphique et le code. Alors pourquoi ne pas simplement redessiner la chose, et de conserver les données? Il y a une telle suggestion ici: stackoverflow.com/questions/456211/... Il suggère de remplacer le onConfigurationChanged et ensuite seulement faire le setContentView, en sautant le onCreate...
InformationsquelleAutor Ted | 2010-01-09