82 votes

savedInstanceState est toujours nul

Voici mon code savedInstaceState :

@Override
public void onSaveInstanceState(Bundle savedInstanceState) 
{
    savedInstanceState.putStringArrayList("todo_arraylist", Altodo);
    Log.v("bundle", "Saved");
    super.onSaveInstanceState(savedInstanceState);
}

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

    if (savedInstanceState != null) 
    {
        Altodo = savedInstanceState.getStringArrayList("todo_arraylist");
        Log.v("bundle", "Restored");
    }
    else
    {
        Log.v("bundle", "null");
    }

    setContentView(R.layout.main);
}

Les journaux montrent toujours la balise "bundle save".

Mais en onCreate méthode, SavedInstanceState est toujours nul.

2 votes

Vous devez appeler super.onSaveInstanceState(savedInstanceState) avant d'ajouter vos valeurs au Bundle, sinon elles seront effacées lors de cet appel (Droid X Android 2.2).

2 votes

J'ai le même problème et je peux confirmer que cela ne fonctionne pas. Quelqu'un l'a déjà résolu ?

2voto

Jonathan Allard Points 3754

Il ne faut pas super.onSaveInstanceState(savedInstanceState); sera la première ligne de votre dérogation ?

Modifier : War_Hero fait remarquer dans les commentaires que la la documentation sur ce sujet indique que non, ça ne devrait pas être la première ligne.

1voto

Vérifiez votre activité dans AndroidManifest.xml et retirer android:noHistory si elle est vraie.

<activity
    // ....
    android:noHistory="false" />

0voto

JAL Points 2276

Pour déboguer, pensez à implémenter onRestoreInstanceState et à placer un appel à Log.d dans cette méthode. Ensuite, dans l'émulateur, appuyez sur ctrl-F11 ou autre pour faire pivoter le téléphone. Votre appel à Log.d devrait être activé.

0voto

Dharmendra Points 14394

Mettre en œuvre une méthode de onRestoreInstanceState et mettez-y le code suivant

Altodo = savedInstanceState.getStringArrayList("todo_arraylist");

0voto

Aron Lorincz Points 1607

J'ai découvert que lorsque je surcharge onSaveInstanceState() et sauvegarder réellement des données dans le Bundle L'état de l'instance est rétabli. Sinon, il ne l'est pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X