Speichern von UI auf Orientierungsänderung – onSaveInstanceState funktioniert nicht wie erwartet, wenn das Fragment beibehalten wird

Verwenden von compat lib v1 (nicht mit v2 | 3 wegen bestimmter Bugs); Eine Variation dieser Frage .

Ich habe ein Fragment, dessen UI verschiedene Kontrollen hat, deren Zustand ich auf einer Orientierungsänderung beibehalten möchte.

Die Elternaktivität wird bei der Orientierungsänderung zerstört (BITTE erzähle mir nicht von offensichtlichen Veränderungen, um die Aktivitätserholung zu vermeiden !!!!).

Das Fragment ruft setRetainInstance(true) .

1) Jetzt ist mein Verständnis, dass Ansichten mit eindeutigen IDs einen Zustand behalten sollten, um eine Orientierungsänderung zu sagen. Angesichts dieser würde ich erwarten, dass ein Nicht-Null-Bündel in onCreateView|onActivityCreated aber es ist null.

2) Auf jeden Fall, wenn ich den Status in onSaveInstanceState (um sicherzustellen, dass ich super onSaveInstanceState ) bekomme ich immer noch ein Nullbündel in 'onCreateView | onActivityCreated`

3) Wenn ich setRetainInstance(true) nicht setRetainInstance(true) , setRetainInstance(true) ich ein non-null-Bündel in onCreateView|onActivityCreated auch wenn ich keine `onSaveInstanceState'-Methode habe.

Die Fragen, die ich habe, ist, funktioniert das wie erwartet und mein Verständnis des Lebenszyklus ist gebrochen? Egal, ich vermute, dass der beste Weg für mich wäre, das Fragment zu behalten und dann den Zustand der Kontrollen selbst im Fragment aufrechtzuerhalten.

Danke im Voraus. Peter.

  • Wann call initLoader in Fragment?
  • Android Fragment View State Loss bei der Verwendung von FragmentTransaction.replace ()
  • FragmentTransaction ersetzt nicht funktioniert
  • Fragmente und Meldungen: Target verschiedene Aktivitäten aus der Benachrichtigung; Je nach Bildschirmkonfiguration
  • Fragment in ScrollView gibt schwarzem Hintergrund flackert
  • Kann nicht von android.app.FragmentManager zu android.support.v4.app.FragmentManager konvertieren
  • NavigationDrawer-Aktivität ist mit Fragment-Callbacks und Anwendungs-Business-Logik verstopft
  • Dynamic Broadcast Receiver in Fragment
  • One Solution collect form web for “Speichern von UI auf Orientierungsänderung – onSaveInstanceState funktioniert nicht wie erwartet, wenn das Fragment beibehalten wird”

    Wenn du setRetainInstance(true) benutzt setRetainInstance(true) dann ist natürlich das Bündel null. Das Fragment wird nicht zerstört, sondern nur von der aktuellen Aktivität getrennt und an die neue Aktivität gebunden. Erst wenn das Fragment zerstört wird, bekommst du ein Bündel mit den Werten, die du in onSaveInstanceState gespeichert onSaveInstanceState . Entfernen setRetainInstance(true) einfach setRetainInstance(true) und verwenden Sie die gespeicherten Werte in onCreateView (), um Ihre benutzerdefinierten Ansichten einzurichten.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.