2010-11-07 36 views
0

Comme d'habitude dans Android, chaque fois que l'écran est basculé en mode portrait/paysage, une activité passe par le cycle de vie de onSaveInstanceState à onDestroy puis est recréée.Enregistrer et restaurer un ButtonText lorsque l'orientation de l'écran est inversée

Dans mon activité, il y a un ButtonText qui peut être modifié par l'utilisateur. Il est remis à l'état initial, mais je dois sauvegarder le dernier état en quelque sorte. Comment puis-je y parvenir, dois-je remplacer onSaveInstanceState? Quelqu'un peut-il montrer un exemple? Étape # 1: Appelez getText().toString() sur le Button pour obtenir la légende.

Répondre

1

Étape # 2: Appel putString() sur le Bundle passé à votre mise en œuvre de onSaveInstanceState() pour stocker la légende.

Étape # 3: Appel getString() sur le Bundle passé à votre mise en œuvre de onRestoreInstanceState() (ou onCreate(), si le Bundle n'est pas null, si vous le souhaitez) pour obtenir votre légende en arrière, puis appelez setText() sur votre Button pour mettre la sous-titrer avant.

Here is a sample project qui utilise onSaveInstanceState() pour sauver un Uri d'un contact (qui affecte également si oui ou non un Button est activé).

+0

C'était clair comme le jour, merci! :-) – cody

4

J'ai eu le même problème et je m'attendais à ce que l'implémentation par défaut prenne soin de restaurer le texte d'un bouton. Malheureusement, ce n'est pas le cas. Enfin j'ai trouvé l'attribut android: freezesText respectivement la méthode setFreezesText (boolean). Lorsque ce paramètre est défini sur true, le bouton restaure automatiquement son texte.

Voir la référence de super classe Bouton TextView: http://developer.android.com/reference/android/widget/TextView.html#attr_android:freezesText

+1

Cette réponse fonctionne, c'est aussi simple que d'ajouter "android: freezesText =" true "' à votre bouton XML et le texte du bouton est enregistré dans les changements d'orientation –