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% 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:
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.
Tags und Links android screen-orientation android-fragments android-actionbar actionbarsherlock