5

Ich benutze die Sherlock ActionBar-Bibliothek und ich habe eine SherlockFragmentActivity, die ActionBar.TabListener implementiert (für meine Tabs) und ich habe 3 Tabs ... jedes ist ein SherlockFragment. Wenn ich rotiere, wird die gesamte Aktivität neu erstellt und ich verliere alle Variablen, die in meinem onCreate innerhalb des Fragments deklariert sind. Wie würde ich das beheben?Fragment innerhalb der Registerkarte Aktivität beim Rotieren alle Daten verlieren?

Ich dachte, ich sollte Fragmente als Tabs anstelle von Aktivitäten verwenden ... ist das falsch?

EDIT: Ich sollte erwähnen, dass meine aktuelle Workaround ist statische Listen in der Registerkarte Aktivität haben und das Fragment Push-Zeug zu diesen Listen auf onPause (und Sachen von ihnen auf onResume zurück). Ich mag das wirklich nicht und ich weiß, dass es einen besseren Weg geben muss.

Auch in Bezug auf if (savedInstanceState == null), habe ich das versucht und es scheint nicht zu funktionieren. Ich denke, das liegt daran, dass die Aktivität, die meine Fragmente enthält, neu erstellt wird und die Registerkarten neu erstellt werden müssen.

+0

Sind Halte Sie die Fragmente? –

+0

vielleicht nicht? Dies ist das erste Mal, dass ich Fragmente in einer Anwendung verwendet habe. – snotyak

+1

Es sollte eine Methode namens setRetainInstance() oder so ähnlich sein. Ich habe gerade eine sehr schlechte Verbindung, also kann ich es nicht überprüfen. –

Antwort

5

Es gibt eine Methode namens setRetainInstance() in der Klasse Fragment, die Sie auf true setzen müssen. Dadurch wird die Instanz Ihrer Fragmente gespeichert, und Sie können dann in onCreate() nach gespeicherten Instanzen suchen.

Weitere Informationen finden Sie hier: http://developer.android.com/reference/android/app/Fragment.html

+1

danke. Dies ist, was ich zusätzlich zu if (savedInstanceState == null) { // create tabs } innerhalb meiner onCreate() für die Registerkarte Aktivität – snotyak

+0

nice one, zuvor habe ich diese Sachen bei onConfigurationChanged und neu erstellen alle die Fragmente für neues Layout. Ihre Lösung könnte effektiver sein. –

+0

@ GökhanBarışAker Es sollte ja sein :-) –

Verwandte Themen