2013-03-19 31 views
6

Używam jFEinstien10's SlidingMenu. Menu, które się wyciąga, to Fragment. Gdy użytkownik kliknie element menu, robi coś takiego:FragmentTransaction inside a Fragment

FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction(); 
SherlockListFragment mFrag = new ItemsFragment(); 
t.replace(R.id.main_frag, mFrag); 
t.commit(); 

Jednak słyszałem, że to nie jest dobra praktyka, aby kontrolować Fragment z innego Fragment. W takiej sytuacji jest to akceptowalna metoda? Czy powinienem używać metody oddzwaniania do rodzica FragmentActivity.

Jeśli metoda zwrotna jest właściwa, czy mogę zobaczyć przykład jak to działa?

Odpowiedz

18

Zamiast przeprowadzać transakcję fragmentem, sugeruję pozostawienie go na poziomie Aktywności. Aby to zrobić, zdefiniuj w swoim działaniu metodę publiczną, a następnie wywołaj ją ze swojego fragmentu. Na przykład:

Załóżmy swoją aktywność jest:

class MainActivity extends Activity{ 
    .... 

    public void replaceFragment(){ 
     FragmentTransaction t = getSupportFragmentManager().beginTransaction(); 
     SherlockListFragment mFrag = new ItemsFragment(); 
     t.replace(R.id.main_frag, mFrag); 
     t.commit(); 
    } 

    .... 
} 

iw granicach swojego fragmentu, należy wykonać następujące połączenia:

((MainActivity)getActivity()).replaceFragment(); 
Powiązane problemy