2011-09-16 18 views
6

Powiel możliwe:
Separate Back Stack for each tab in Android using FragmentsAndroid Fragment wyświetlanie stanu w przyjmującym zakładce

I niedawno rozpoczął pracę nad aplikacji z fragmentów wewnątrz hosta zakładki w FragmentActivity .. the Dokumentacja systemu Android mówi, że robi to, ponieważ klasa TabActivity jest teraz przestarzała. Aby korzystać z fragmentów, korzystam z biblioteki wsparcia dla Androida v4.

Obecnie moja aplikacja składa się z jednej karty, w której znajdują się fragmenty. Aby przejść do nowych fragmentów na karcie używam następujący kod (co wydaje się być poprawne na podstawie dokumentacji):

FragmentTransaction ft = fragmentManager.beginTransaction(); 
ft.replace(containerId, newFragment); 
ft.addToBackStack(null); 
ft.commit(); 

Wszystko było dobrze i dobre, dopóki nie uderzył w tył przycisku, aby przejść do poprzedniego fragment i zdałem sobie sprawę, że cały mój stan widoku został prawie całkowicie zniszczony. Co się dzieje, jest to, że metoda onCreateView() była wywoływana ponownie na moim poprzednim fragmencie, mimo że jego widoki zostały wcześniej utworzone ... Dlaczego tak jest? Szukałem informacji na temat prawidłowego utrzymywania stanu z fragmentami, ale nie mogę znaleźć odpowiedniej dokumentacji na ten temat.

Co ja wtedy starał się korzystać z

ft.add(containerId, newFragment); 

zamiast

ft.replace(containerId, newFragment); 

to w rzeczywistości pracował całkiem dobrze, że mój stan widok został zatrzymany - onCreateView() nie został powołany za każdym razem moje poprzednie fragmenty zostały pokazane. Zacząłem jednak zauważać, że mogłem wchodzić w interakcje z komponentami (przycisk itp.) Z poprzednich fragmentów leżących poniżej bieżącego fragmentu, mimo że nie widziałem komponentów !? Czytałem gdzieś, że należy użyć następującej metody, aby zapisać jakiś stan:

public void onSaveInstanceState (Bundle outState) 

Zaimplementowałem tę metodę, jednak nigdy nie została ona wywołana! Zauważyłem również, że pakiety przeszłości metod onCreateView() i onActivityCreated() mają zawsze wartość NULL. Z pewnością Google nie sprawiło, że było tak trudno osiągnąć coś takiego i muszę czegoś przegapić? Każda pomoc w prawidłowym zachowaniu stanu widoku fragmentu będzie bardzo ceniona!

Dzięki.

+0

Ktoś jeszcze tego doświadczył? Proszę pomóż! :) –

+0

OK, więc wygląda na to, że problem związany z wyświetlaniem nie jest problemem, gdy po prostu porusza się po fragmentach, ale gdy pojawia się inne działanie ... zobacz błąd, który zarejestrowałem (wydanie 20120): http: // kod. google.com/p/android/issues/detail?id=20120 –

Odpowiedz

Powiązane problemy