Est-ce que je manque quelque chose ou est-ce que Fragment
s n'a pas de méthode onRestoreInstanceState()
? Si non, comment puis-je obtenir quelque chose de similaire?
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 .
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()
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.
onViewStateRestored
de Fragment
est l'équivalent de onRestoreInstanceState
de Activity
. Mais il est appelé après onActivityCreated(Bundle)
et avant onStart()
.