2016-12-13 11 views
0

ich ein Activity haben zu entfernen, die diese Fragment eine Fragment und erstellt dann schafft eine andere Fragment:ein Fragment aus einem Fragment

Aktivität -> Fragment1 -> Fragment2

Ich bin jetzt in Fragment2 und ich Ich gehe gerne zurück auf Fragment1, indem ich auf eine Schaltfläche klicke.

In meinem OnClickListener meiner button ich habe:

getActivity().getSupportFragmentManager().beginTransaction().remove(fragment2.this).commit(); 

Das bin ich Activity zum bringt. Gibt es tatsächlich eine Möglichkeit, einfach Fragment2 zu entfernen und zu Fragment1 gehen?

Vielen Dank im Voraus für Ihre Zeit, ich konnte keine passenden Informationen online finden!

+0

können Sie verwenden getSupportFragmentManager(). PopBackStack() anstelle des Fragments des Entfernens –

+0

Durch die Verwendung von 'getSupportFragmentManager(). PopBackStack()' ich das gleiche Ergebnis zu erhalten, um Aktivität zurück – LDG

+0

ich 'ersetzen()', durch mit 'add()' würde ich in der Lage sein zu knallen? – LDG

Antwort

3

@AhmedAbidi hat einen schönen Einblick in Ihr Problem und ja, richtig zu implementieren kann Ihr Problem lösen. Aber ich würde trotzdem einen anderen Ansatz vorschlagen, um mit dieser Art von Situationen umzugehen.

Schreiben Sie zwei öffentliche Funktionen in Ihre Activity, um zwischen Ihren Fragmenten zu wechseln.

public void switchToFragment1() { 
    getSupportFragmentManager().beginTransaction() 
     .replace(R.id.fragment_container, new Fragment1()).commit(); 
} 

public void switchToFragment2() { 
    getSupportFragmentManager().beginTransaction() 
     .replace(R.id.fragment_container, new Fragment2()).commit(); 
} 

nun aus dem Button-Klick in Ihrem Fragment1 Sie könnten die Fragment2 starten, über

((YourActivity) getActivity()).switchToFragment2(); 

Und dasselbe, während zu Fragment1

((YourActivity) getActivity()).switchToFragment1(); 
zum Schalten
0

Ihre Frage mehr Code muss Klarheit.

Ist Fragment1 das Hinzufügen von Fragment2 über getSupportFragmentManager() oder getChildFragmentManager()? Vermutlich scheint es, dass Sie das erstere tun, und wenn dies der Fall ist, verwenden Sie die Fragment-API falsch. Fragmente sollen nicht umeinander wissen, pro Android's Fragment Documentation:

Oft werden Sie ein Fragment mit anderen kommunizieren wollen, zum Beispiel den Inhalt auf ein Benutzerereignis basiert zu ändern. Die gesamte Kommunikation von Fragment zu Fragment erfolgt über die zugehörige Aktivität. Zwei Fragmente sollten niemals direkt kommunizieren.

Sie sollten daher die entsprechenden Zuhörer implementieren von Fragment1 zu Aktivität zu kommunizieren, die dann entscheiden können, wo/wann Fragment2 hinzufügen - dann nutzen richtig die Rückseite Stapel Funktionalität von getSupportFragmentManager().addToBackStack() ... mit getSupportFragmentManager().popBackStack(). Weitere Informationen finden Sie unter Android Documentation on Back Navigation for Fragments.

Verwandte Themen