Quelqu'un peut-il m'aider à connaître le Bundle savedInstanceState
dans onCreate(Bundle savedInstanceState)
Je suis novice dans Android. J'essaie de le comprendre à partir de developer.android.com. Mais je ne peux pas comprendre. Quelqu'un peut-il le simplifier?
122
Réponses:
Si vous enregistrez l'état de l'application dans un bundle (généralement des données dynamiques non persistantes dans
onSaveInstanceState
), il peut être renvoyé àonCreate
si l'activité doit être recréée (par exemple, changement d'orientation) afin que vous ne perdiez pas cela avant information. Si aucune donnée n'a été fournie, la valeursavedInstanceState
est nulle.la source
la source
onCreate(Bundle savedInstanceState)
vous obtiendrez la valeurBundle
nulle lorsque l'activité démarrera pour la première fois et elle sera utilisée lorsque l'orientation de l'activité sera modifiée .......http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android offre un autre moyen élégant d'y parvenir. Pour y parvenir, nous devons remplacer une méthode appelée
onSaveInstanceState()
. La plate-forme Android permet aux utilisateurs de sauvegarder n'importe quel état d'instance. L'état de l'instance peut être enregistré dans le bundle. Le bundle est passé comme argument à la méthode onSaveInstanceState.nous pouvons charger l'état d'instance sauvegardé à partir du Bundle passé en argument à la
onCreate
méthode. Nous pouvons également charger l'état de l'instance sauvegardé dansonRestoreInstanceState
method. Mais je laisserai cela aux lecteurs pour comprendre.la source
savedInstanceState
sera non-null
si aonSavedInstanceState()
été précédemment appelé. les changements d'orientation ne sont qu'un exemple dans lequel cela pourrait se produire.Bundle
argumentonCreate(Bundle)
sera non-null
si et seulement si la méthodeActivity
avait saonSaveInstanceState
méthode précédemment appelée. Cela se produit pendant les changements d'orientation ... et se produit également lorsque l'activité revient après avoir été tuée par le système d'exploitation, et lorsque vous déclenchez tout autre changement de configuration d'intérêt sur votre appareil.Comme Dhruv Gairola a répondu, vous pouvez enregistrer l'état de l'application en utilisant Bundle savedInstanceState. J'essaie de donner un exemple très simple que les nouveaux apprenants comme moi peuvent comprendre facilement.
Supposons que vous ayez un simple fragment avec un TextView et un Button. Chaque fois que vous cliquez sur le bouton, le texte change. Maintenant, changez l'orientation de votre appareil / émulateur et notez que vous avez perdu les données (signifie les données modifiées après avoir cliqué sur vous) et que le fragment recommence comme la première fois. En utilisant Bundle savedInstanceState, nous pouvons nous en débarrasser. Si vous jetez un œil au cycle de vie du fragment. Fragment Lifecylce vous obtiendrez qu'une méthode "onSaveInstanceState" est appelée lorsque le fragment est sur le point d'être détruit.
Ainsi, nous pouvons enregistrer l'état signifie la valeur de texte modifiée dans cet ensemble comme ceci
Après avoir fait l'orientation, la méthode "onCreate" sera appelée, non? donc on peut juste faire ça
Maintenant, vous ne perdrez pas votre valeur après l'orientation. La valeur modifiée sera toujours affichée.
la source
Fonction onCreate (Bundle savedInstanceState) sous Android:
1) Lors du premier appel ou du lancement d'une activité, la méthode onCreate (Bundle savedInstanceState) est responsable de la création de l'activité.
2) Chaque fois que l'orientation (c'est-à-dire de l'horizontale à la verticale ou verticale à l'horizontale) de l'activité est modifiée ou lorsqu'une activité est interrompue de force par un système d'exploitation, alors saveInstanceState, c'est-à-dire que l'objet de la classe Bundle enregistrera l'état d'une activité.
3) Une fois l'orientation modifiée, onCreate (Bundle savedInstanceState) appellera et recréera l'activité et chargera toutes les données de savedInstanceState.
4) Fondamentalement, la classe Bundle est utilisée pour stocker les données d'activité chaque fois que la condition ci-dessus se produit dans l'application.
5) onCreate () n'est pas requis pour les applications. Mais la raison pour laquelle elle est utilisée dans l'application est que cette méthode est le meilleur endroit pour mettre le code d'initialisation.
6) Vous pouvez également mettre votre code d'initialisation dans onStart () ou onResume () et lorsque votre application se chargera en premier, cela fonctionnera de la même manière que dans onCreate ().
la source
onCreate(Bundle)
est appelée lorsque l'activité démarre. Vous pouvez l'utiliser pour effectuer une initialisation unique telle que la création de l'interface utilisateur.onCreate()
prend un paramètre qui est nul ou des informations d'état précédemment enregistrées par leonSaveInstanceState
.la source
onCreate (Bundle savedInstanceState) est appelé et savedInstanceState sera non nul si votre activité et qu'elle s'est terminée dans un scénario (vue visuelle) décrit ci-dessus. Votre application peut ensuite récupérer (attraper) les données de savedInstanceState et régénérer votre activité
la source