5

Używam biblioteki Sherlock ActionBar i mam implementację ActionBar.TabListener SherlockFragmentActivity (dla moich kart) i mam 3 zakładki ... każda z nich to SherlockFragment. Kiedy się obracam, cała Aktywność jest odtwarzana i tracę wszystkie zmienne zadeklarowane w moim onCreate w Fragmentie. Jak mam to naprawić?Fragment w obrębie zakładki Aktywność traci wszystkie dane podczas obracania?

Pomyślałem, że powinienem używać fragmentów jako zakładek zamiast działań ... czy to źle?

EDIT: należy wspomnieć, że mój obecny Rozwiązaniem jest posiadanie listy statycznych w Działaniu Tab i mają rzeczy fragment Prześlij na tych listach na OnPause (i inne rzeczy od nich z powrotem na onResume). NAPRAWDĘ nie lubię tego robić i wiem, że musi być lepszy sposób.

Również jeśli chodzi o if (savedInstanceState == null), próbowałem tego i to nie działa. Myślę, że dzieje się tak dlatego, że Aktywność, która zatrzymuje moje Fragmenty, jest odtwarzana, a karty muszą być ponownie utworzone.

+0

Czy zachowując fragmenty? –

+0

może nie? Po raz pierwszy użyłem Fragmentów w aplikacji. – snotyak

+1

Powinny istnieć metody o nazwie setRetainInstance() lub coś w tym stylu. Mam teraz bardzo słabe połączenie, więc nie mogę tego dla ciebie sprawdzić. –

Odpowiedz

5

Istnieje metoda o nazwie setRetainInstance() w klasie Fragment, którą należy ustawić na true. To pozwoli zachować instancję fragmentów, a następnie można sprawdzić, czy nie ma zapisanych wystąpień w wersji onCreate().

Więcej informacji tutaj: http://developer.android.com/reference/android/app/Fragment.html

+1

dzięki. Tego właśnie potrzebowałem oprócz if (savedInstanceState == null) { } tworzenie zakładek } w moim onCreate() dla zakładki Aktywność – snotyak

+0

fajny, poprzednio obsługiwałem te rzeczy w onConfigurationChanged i ponownie tworzyłem wszystko fragmenty do nowego układu. Twoje rozwiązanie może być bardziej skuteczne. –

+0

@ GökhanBarışAker To powinno być, tak :-) –

Powiązane problemy