wake-up-neo.com

android fragment onRestoreInstanceState

Vermisse ich etwas oder hat Fragment keine onRestoreInstanceState() -Methode? Wenn nicht, wie gehe ich vor, um etwas Ähnliches zu erreichen?

114
Shaun

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 .

189
mgv

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()

40
jimpanzer

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.

25
Gaurav Darji

onViewStateRestored von Fragment ist das Äquivalent von onRestoreInstanceState von Activity. Es wird aber nach onActivityCreated(Bundle) und vor onStart() aufgerufen.

13
nhkhanh