2012-11-03 12 views
8

Mam pasek nagłówka (trochę jak menu) i 4 fragmenty (MAIN, A, B, C), z których MAIN powinien być fragmentem "main/root" dla backstack.Nawigacja fragmentów Androida i backstack

Problem mam, gdy użytkownik w menu idzie na przykład MAIN> A> B> C. Jeśli po prostu użyję backstack, przejdzie w kolejności odwrotnej, czego nie chcę. muszę z powrotem przycisk, aby przejść z powrotem do głównego bez względu na to w jaki sposób użytkownik nawigować do jednego z tych 3.

enter image description here

obecnej mojego kodu (co jest źle, to kończy pracę aplikacji, gdy nie jest głównym i aktualny fragment jest włączony z drugiej fragment non-MAIN) wygląda następująco:

private void SwitchFragment(Fragment pFragment) 
{ 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment); 
    if (_CurrentFragment == _Frag_Main) 
     ft.addToBackStack(null); 
    ft.commit(); 

    _CurrentFragment = pFragment; 
} 
+0

Wygląda, że ​​dodajesz tylko główny fragment do tylnego stosu, a nie do innych. –

Odpowiedz

4

Twój stosu musi zawiera 2 fragmenty przy maksymalnym

Menem jest widoczny Main jest onBackstack/AorBorC jest widoczny. Użytkownik klika z tyłu ==> Główny jest widoczny. kliknięcie użytkownika na plecach ==> końcowego aplikacja

Przypuszczam, A/B/C są wyświetlane w tym samym widoku, tak w tym przypadku,

Kiedy użytkownik kliknij na menu, trzeba sprawdzić, czy A/B/C jest aktualnie wyświetlany i zastępuje go przez użytkownika.

private void displayFragment(Fragment pFragment) { 
    Fragment fr = getSupportFragmentManager() 
      .findFragmentById(R.id.main_fl_fragmentcontainer);   
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment); 
    if (_CurrentFragment == _Frag_Main) { 
     ft.addToBackStack(null); 
    } 
    ft.commit();  
    _CurrentFragment = pFragment; 
} 

może zastąpić metodę swojej aktywności pod numerem OnBackPressed.

Powiązane problemy