web-dev-qa-db-fra.com

Quoi de neufCréer (Bundle savedInstanceState)

Quelqu'un peut-il m'aider à connaître le Bundle savedInstanceState dans onCreate(Bundle savedInstanceState) Je suis un novice dans Android. J'essaie de le comprendre de developer.Android.com. Mais je ne suis pas capable de comprendre. Quelqu'un peut-il le simplifier?

111
user1077015

Si vous enregistrez l'état de l'application dans un ensemble (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, le changement d'orientation) cette information préalable. Si aucune donnée n'a été fournie, savedInstanceState est null.

... vous devrait utiliser la méthode onPause () pour écrire toutes les données persistantes (telles que les modifications user) dans la mémoire. De plus, la méthode onSaveInstanceState (Bundle) est appelé avant de placer l'activité dans un tel état d’arrière-plan, vous permettant d’économiser toute dynamique état d'instance dans votre activité dans le Bundle donné, pour être plus tard reçu dans onCreate (Bundle) si l'activité doit être recréée . Consultez la section Cycle de vie du processus pour plus d'informations sur la manière dont le Le cycle de vie d'un processus est lié aux activités qu'il héberge. Remarque qu'il est important de sauvegarder les données persistantes dans onPause () au lieu de onSaveInstanceState (Bundle) car ce dernier ne fait pas partie du fichier callbacks de cycle de vie, donc ne sera pas appelé dans chaque situation comme décrit dans sa documentation.

la source

99
Dhruv Gairola

onCreate(Bundle savedInstanceState) vous obtiendrez la Bundle null lorsque l'activité démarrera pour la première fois et 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 fournit un autre moyen élégant d'y parvenir. Pour ce faire, nous devons redéfinir une méthode appelée onSaveInstanceState(). La plate-forme Android permet aux utilisateurs de sauvegarder n'importe quel état d'instance. L'état d'instance peut être sauvegardé dans le Bundle. Bundle est passé en tant qu'argument à la méthode onSaveInstanceState.

nous pouvons charger l'état d'instance sauvegardé à partir du Bundle passé en tant qu'argument à la méthode onCreate. Nous pouvons également charger l'état d'instance sauvegardée dans la méthode onRestoreInstanceState. Mais je laisserai cela aux lecteurs de comprendre.

15
Dheeresh Singh

Comme Dhruv Gairola a répondu, vous pouvez enregistrer l'état de l'application à l'aide de 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 avez cliqué sur le bouton, le texte change. Maintenant, changez l'orientation de votre périphérique/émulateur et remarquez que vous avez perdu les données (signifie que les données modifiées après avoir cliqué sur vous avez obtenu) et que le fragment recommence à la première fois. En utilisant Bundle savedInstanceState, nous pouvons nous en débarrasser. Si vous jetez un coup d'œ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.

Donc, nous pouvons enregistrer l'état signifie que la valeur de texte modifiée dans cet ensemble est la suivante:

 int counter  = 0;
 @Override
 public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("value",counter);
 }

Après avoir fait l'orientation, la méthode "onCreate" sera appelée right? afin que nous puissions le faire

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(savedInstanceState == null){
        //it is the first time the fragment is being called
        counter = 0;
    }else{
        //not the first time so we will check SavedInstanceState bundle
        counter = savedInstanceState.getInt("value",0); //here zero is the default value
    }
}

Maintenant, vous ne perdrez pas votre valeur après l'orientation. La valeur modifiée sera toujours affichée.

10
Asad

onCreate(Bundle) est appelé lors du premier démarrage de l'activité. 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 null ou des informations d'état précédemment enregistrées par la variable onSaveInstanceState.

3
user1619310

onCreate (Bundle savedInstanceState) Fonction sous Android:

1) Quand une activité appelle ou est lancée pour la première fois, la méthode onCreate (Bundle savedInstanceState) est responsable de la création de l'activité. 

2) Chaque fois que l’orientation d’une activité est modifiée (c’est-à-dire horizontalement, verticalement ou verticalement), ou lorsqu’une activité est interrompue de manière forcée par un système d’exploitation, alors savedInstanceState, c’est-à-dire un objet de la classe Bundle, enregistre l’état d’une activité. 

3) Une fois l'orientation modifiée, onCreate (Bundle savedInstanceState) appelle, recrée l'activité et charge toutes les données à partir de savedInstanceState. 

4) Fondamentalement, la classe Bundle est utilisée pour stocker les données d'activité chaque fois que la condition ci-dessus survient dans l'application. 

5) onCreate () n'est pas requis pour les applications. Mais la raison pour laquelle il est utilisé dans l'application est parce que cette méthode est le meilleur endroit pour mettre du code d'initialisation.

6) Vous pouvez également mettre votre code d'initialisation dans onStart () ou onResume () et lorsque l'application sera chargée en premier, cela fonctionnera comme dans onCreate ().

3
Abhi

onCreate (Bundle savedInstanceState) est appelé et savedInstanceState sera non nul si votre activité et votre activité ont été terminées dans un scénario (affichage visuel) décrit ci-dessus. Votre application peut alors récupérer (Attraper) les données de savedInstanceState et régénérer votre activité.

0
kabilan