Android ListFragment speichert das Bündel nicht in onSaveInstanceState () / holt kein Bündel in onActivityCreated ()

Ich bin neu in Android und ich bin mit dem folgenden Problem konfrontiert. Ich entwickle für beide, Android 2 und 3, und deshalb verwende ich Fragmente. Allerdings, um die App auf Android 2 Geräte Ich importiere android.support.v4.app.ListFragment. Ich muss die Auswahl in meinem ListFragment pflegen, wenn sich die Ausrichtung des Bildschirms ändert. Ich überschreibe onSaveInstanceState() -Methode und stelle ein int in das Bündel ein. Wenn der Bildschirm gedreht wird, wird diese Methode aufgerufen und das int wird dem Bündel hinzugefügt. Wenn jedoch onActivityCreated() aufgerufen wird, ist sein Bündel null. Ich onSaveInstanceState() dem Beispiel auf Android-Website: http://developer.android.com/reference/android/app/Fragment.html , aber wie oben erwähnt – nach onSaveInstanceState() aufgerufen wird, ist das Bündel in onActivityCreated() noch Null.

Hier ist der Code:

 import android.support.v4.app.ListFragment; public class VisitsHomeFragment extends ListFragment { private int selectedPosition = -1; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (savedInstanceState != null) { if (savedInstanceState.containsKey("SELECTED_POSITION")) { selectedPosition = savedInstanceState.getInt("SELECTED_POSITION"); } } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("SELECTED_POSITION", selectedPosition); } } 

Ich würde jede mögliche Hilfe mit diesem Problem schätzen.

  • Erkennung gespiegelter Orientierungsänderungen in Android
  • Holen Sie sich aktuelles Fragment und speichern Sie on onSaveInstanceState () Methode für Bildschirmausrichtung
  • Android Sperrorientierung des Bildschirms für alle Aktivitäten
  • Unterstützung beider Orientierungsansichten in Honeycomb
  • Deaktivieren und Aktivieren von Orientierungsänderungen in einer Aktivität in Android programmgesteuert
  • Android erhalten Bildschirmgröße der anderen Bildschirm Orientierung
  • Falsche Anzeigebreite und -höhe in Android
  • Android Action Bar Tab mit Scrollview doppelte Ansicht nach Orientierung ändern
  • 3 Solutions collect form web for “Android ListFragment speichert das Bündel nicht in onSaveInstanceState () / holt kein Bündel in onActivityCreated ()”

    Ich hatte das gleiche Problem, Hinzufügen von android:id zum Fragment-Element in der Layout-Datei behoben dieses Problem.

    Es scheint, dass FragmentManager die ID verwendet, um das entsprechende Bündel zu senden, wenn ein Fragment neu erstellt wird.

    setRetainInstance(true) Sie sicher, dass Sie setRetainInstance(true) im Fragment nicht aufrufen. Nach einem kleinen Experimentieren habe ich dies als den Fehler in meinem Code erkannt. Der Nachteil, es auf diese Weise zu tun, muss man manuell alle Instanzdaten bündeln.

    Nach dem Entfernen des Methodenaufrufs und der Aktualisierung meines onSaveInstanceState um alle meine onSaveInstanceState zu onSaveInstanceState , kann ich nun die onSaveInstanceState bei der Rotation wiederherstellen.

    Ich hatte das gleiche Problem, und ich habe es schließlich aufgedreht, um verschiedene Android: id Attribut Werte auf die Fragment Elemente in den beiden verschiedenen Layouts (Porträt und Landschaft).

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