web-dev-qa-db-fra.com

android fragment onRestoreInstanceState

Est-ce que je manque quelque chose ou est-ce que Fragments n'a pas de méthode onRestoreInstanceState()? Si non, comment puis-je obtenir quelque chose de similaire?

114
Shaun

Les fragments n'ont pas de méthode onRestoreInstanceState.

Vous pouvez obtenir le même résultat dans onActivityCreated, qui reçoit un ensemble avec l'état d'instance enregistré (ou null).

Vérifiez le code source ici .

189
mgv

Je sais que vous avez accepté la réponse, mais vous devriez lire le documentation officielle sur les fragments , et il est écrit (paragraphe "Gestion du cycle de vie des fragments"):

Vous pouvez conserver l'état d'un fragment à l'aide d'un Bundle, au cas où le processus de l'activité serait tué et vous devez restaurer l'état du fragment lorsque l'activité est recréée. Vous pouvez enregistrer l'état pendant le rappel onSaveInstanceState () du fragment et le restaurer pendant onCreate (), onCreateView () ou onActivityCreated ().

Donc, vous pouvez utiliser ce qui vous convient le mieux: onCreate(), onCreateView() ou onActivityCreated()

40
jimpanzer

Dans ListFragment du guide de fragments exemple vous pouvez trouver:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}

Que vous pouvez utiliser comme ceci:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }
}

onActivityCreated() est appelé après le retour du fragment de la pile.

25
Gaurav Darji

onViewStateRestored de Fragment est l'équivalent de onRestoreInstanceState de Activity. Mais il est appelé après onActivityCreated(Bundle) et avant onStart().

13
nhkhanh