2012-03-22 13 views
7

Czy ktoś może mi wytłumaczyć lub może wskazać łącze lub przykład tego, jak należy traktować orientację ekranu, jeśli chodzi o fragmenty. Problem w tym momencie polega na tym, że mam aplikację z paskiem akcji z trzema zakładkami. Każda zakładka zawierająca jeden fragment. Więc kiedy odwrócić urządzenie tylko jeden fragment, że ustawiony jako wybierane za pomocąorientacja ekranu obsługi fragmentów z zakładkami w pasku czynności

actionbar.setSelectedNavigationItem(1) 

jest pokazane (bez zamieszania, pozostałe karty są widoczne, ale po kliknięciu na nich nic się nie dzieje, nie mogą wybrane i pokazane, ich zawartość nigdy nie jest pokazywana). Czy jest coś, co się robi w takich przypadkach? Czy ktoś może mi doradzić, byłbym wdzięczny. Dziękuję.

Odpowiedz

13

miałem ten sam problem i znalazł rozwiązanie tutaj: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html

Problem jest, że istnieją już fragmenty na kartach z poprzednio zapisanego stanu. Musisz je dezaktywować.

Oto fragment kodu dla konstruktora swojej TabListener:

public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) { 
     mActivity = activity; 
     mTag = tag; 
     mClass = clz; 
     mArgs = args; 

     // Check to see if we already have a fragment for this tab, probably 
     // from a previously saved state. If so, deactivate it, because our 
     // initial state is that a tab isn't shown. 
     mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag); 
     if (mFragment != null && !mFragment.isDetached()) { 
      FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction(); 
      ft.detach(mFragment); 
      ft.commit(); 
     } 
    } 

Nadzieja mógłbym pomóc.

+0

Wymyśliłem to samo, kilka dni temu. Ale rozwiązał to trochę inaczej. W metodzie onDestroyView w fragmentach, wywołuję usunięcie dla tego konkretnego fragmentu, więc nie będą to fragmenty z poprzednich stanów. Ale twoja droga rozwiązuje problem, jak sobie wyobrażam. Więc dziękuję! – Sandra

+0

Dobrze wyjaśniono, ma sens, rozwiązuje określony wspólny problem. Wielkie dzięki. A + – LeffelMania

+1

Dzięki! BTW, używam hide/show zamiast odczepiania/dołączania jest kilka miejsc, aby uniknąć odtwarzania fragmentów widokowych (czasami jest długa). I to też działa. –

Powiązane problemy