Aktuelles Fragment abrufen und bei onSaveInstanceState () -Methode für Bildschirmausrichtung speichern

8

Ich habe eine Aktivität mit mehreren Fragmenten. Ich benutze auch ActionbarSherlock für meine Tabs, die auch mit Fragmenten verbunden sind.

Mein Problem ist, wenn ich den Bildschirm rotiere (also Portrait in Landscape / umgekehrt), wird meine Aktivität erneut aufgerufen, so dass sie meine Aktivität neu startet.

Ich möchte meine Aktivität nicht neu starten, sondern nur das aktuelle Fragment wiederherstellen, das vor der Rotation angezeigt wurde. BITTE antworte nicht android:configChanges="orientation|keyboardHidden" , da es das Problem nicht gelöst hat, sondern wie ein einfacher Hack. Meine Lösung war OnsaveInstanceState und OnRestoreInstanceState Methoden, aber ich weiß einfach nicht, wie ich es mit meinem Problem verwenden soll. Bitte hilf mir dabei. Jede Antwort wird sehr geschätzt.

CODE:

%Vor%     
Junnel Gallemaso 20.09.2012, 13:36
quelle

1 Antwort

13

Fragmente werden nach einer Gerätedrehung standardmäßig wiederhergestellt, wenn Sie sie nicht erneut hinzufügen. Wenn Sie möchten, dass die Fragmente gleich aussehen, sollten Sie onSaveInstanceState in Fragment selbst ausführen. In Activity könntest du einfach so etwas tun wie:

%Vor%

Auch wenn Sie onSaveInstanceState in der Aktivität nicht überschreiben, ist der Parameter savedInstanceState immernoch nicht null, wenn eine Activity wiederhergestellt wird. Es wird nur ein leeres Bundle sein.

Eine weitere Option wäre, den ausgewählten Tab-Index zu speichern und diese Registerkarte erneut auszuwählen, wenn Ihre Aktivität wiederhergestellt wird.

%Vor%

Dies würde die aktuelle Registerkarte erneut auswählen und die Fragment anzeigen, die angezeigt wurde. Der einzige Nachteil ist, dass der Status Ihres Fragments nicht gespeichert wird. Um den Status des Fragments zu speichern, müssen Sie etwas wie die erste Lösung tun.

    
MCeley 20.09.2012, 13:52
quelle