2016-11-15 3 views
0

Ich habe ein Fragment, in dem es ein verschachteltes Fragment ist, das ich auf diese Weise hinzufügen:Nested-Fragment und zurück Stapel

  if (home == null) { 
       home = new MyFragment(); 
       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
       transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
       transaction.addToBackStack(MyFragment.class.getName()); 
       transaction.add(R.id.child_fragment, home).commit(); 
      } 

Wenn ich ein anderes Fragment eingeben und das Kindfragment von oben zurück ist nicht da. Ich habe überprüft und die Instanz unterscheidet sich von null.

UPDATE: Ich habe den Code geändert, wie von Ashwin S Ashok vorgeschlagen, aber es funktioniert immer noch nicht.

+0

versuchen Sie mit hinzufügen nicht ersetzen. – zerocool

+0

Angenommen, der obige Code befindet sich im übergeordneten Fragment, funktioniert das, wenn Sie 'getFragmentManager()' in 'getChildFragmentManager()' ändern? – clownba0t

+0

hinzufügen/ersetzen geben das gleiche Ergebnis – charbinary

Antwort

0

Versuchen Sie diese Methoden verwenden:

// Verwenden Sie diese Option, wenn Sie nicht das Fragment behalten wollen.

protected void replaceFragmentStack(int container, Fragment fragment) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(container, fragment); 
    fragmentTransaction.commit(); 
} 

// Verwenden Sie dies, wenn Sie die Fragmente in einem Stapel hinzufügen möchten.

protected void addFragmentStack(int container, Fragment fragment, String tag) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
    fragmentTransaction.add(container, fragment, tag); 
    fragmentTransaction.addToBackStack(tag); 
    fragmentTransaction.commit(); 
} 
+0

Ich habe versucht mit Ihrem Vorschlag, aber es funktioniert nicht wieder. Meine anderen Fragmente funktionieren ordnungsgemäß, aber nicht mit dem verschachtelten Fragment. – charbinary

0

Ich würde vorschlagen, Sie getChildFragmentManager() zu verwenden, wenn Transaktionen innerhalb eines Fragments zu machen. Und es ist ein Fehler, denke ich. Sie können diesen Thread überprüfen es wird Ihnen helfen, alot Android 4.2: back stack behaviour with nested fragments

Auch müssen Sie die Curious Techizen gehen durch ist blog

Hier der Link für die Github project Probe für denselben Mechanismus

ich diese Hoffnung wird dir helfen.

+0

Vielen Dank für die Info. Aber ich würde es wirklich ohne die Support-Bibliothek tun, weil ich viele Änderungen an den Fragmenten vornehmen sollte. – charbinary