2013-03-19 19 views
6

Ich verwende jfeinstien10's SlidingMenu. Das Menü, das auszieht, ist ein . Wenn der Benutzer auf einem Menüpunkt klickt, tut es so etwas wie diese:FragmentTransaction in einem Fragment

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

Aber ich habe gehört, dass es keine gute Praxis ist ein Fragment aus einer anderen Fragment zu steuern. In einer Situation wie dieser ist das eine akzeptable Methode? Oder sollte ich eine Callback-Methode zu dem Eltern FragmentActivity verwenden.

Wenn eine Callback-Methode der richtige Weg ist, kann ich bitte ein Beispiel dafür sehen, wie das funktioniert?

Antwort

18

Anstatt eine Transaktion in einem Fragment durchzuführen, würde ich vorschlagen, dass Sie es auf Aktivitätsebene belassen. Definieren Sie dazu eine öffentliche Methode in Ihrer Aktivität und rufen Sie sie dann von Ihrem Fragment ab. Zum Beispiel:

Angenommen, Ihre Aktivität ist:

class MainActivity extends Activity{ 
    .... 

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

    .... 
} 

Und in Ihrem Fragmente, den folgenden Aufruf:

((MainActivity)getActivity()).replaceFragment(); 
Verwandte Themen