Vermisse ich etwas oder hat Fragment
keine onRestoreInstanceState()
-Methode? Wenn nicht, wie gehe ich vor, um etwas Ähnliches zu erreichen?
Fragmente haben keine onRestoreInstanceState
-Methode.
Sie können dasselbe Ergebnis mit onActivityCreated
erzielen, das ein Bundle mit dem gespeicherten Instanzstatus (oder null) erhält.
Überprüfen Sie den Quellcode hier .
Ich weiß, dass Sie die Antwort akzeptiert haben, aber Sie sollten die offizielle Dokumentation über Fragmente lesen und sie lautet (Absatz "Umgang mit dem Fragment-Lebenszyklus"):
Sie können den Status eines Fragments mithilfe eines Bundles beibehalten, falls der Prozess der Aktivität beendet wird und Sie den Fragmentstatus wiederherstellen müssen, wenn die Aktivität neu erstellt wird. Sie können den Status während des Rückrufs des Fragments onSaveInstanceState () speichern und ihn entweder während onCreate (), onCreateView () oder onActivityCreated () wiederherstellen.
Sie können also das verwenden, das am besten zu Ihnen passt: onCreate()
, onCreateView()
oder onActivityCreated()
Im ListFragment des Fragment-Handbuchs Beispiel finden Sie:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
Was Sie so verwenden können:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
onActivityCreated()
wird aufgerufen, nachdem das Fragment vom Stapel zurückgekehrt ist.
onViewStateRestored
von Fragment
ist das Äquivalent von onRestoreInstanceState
von Activity
. Es wird aber nach onActivityCreated(Bundle)
und vor onStart()
aufgerufen.