2016-07-20 16 views
0

Ich stoße auf seltsames Verhalten in Bezug auf die Zurück-Taste und Fragments. Hier ist meine Situation, ich habe 3 Fragments, f1, f2 und f3 . Es gibt eine Button innerhalb f1 die f2 bringt:Zurück-Taste zeigt falsches Fragment an

getSupportFragmentManager() 
    .beginTransaction() 
    .addToBackStack("f1") 
    .replace(R.id.fragHook, f2, 
    TAG).commit(); 

Diese Transaktion perfekt funktioniert. Ich kann zwischen den 2 Fragmenten hin und her pendeln. Innerhalb von f2 habe ich eine RecyclerView, die der Benutzer eine Zelle auswählen kann. Wenn der Benutzer eine Zelle auswählt, bringe ich f3, aber ich füge nicht f2 zum Backstack:

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.fragHook, f3) 
    .commit(); 

Die Fragmentf3 richtig angezeigt wird. Und beim ersten Mal mit diesem Prozess, ich klicke auf den Zurück-Button und f1 wird wieder korrekt angezeigt. Das Problem kommt jetzt, wenn ich dieselben Schritte wiederhole. Die Button innerhalb f1 wird angeklickt, wodurch f2 mit der RecyclerView angezeigt wird. Dann wird eine Zelle ausgewählt, die f3 ein zweites Mal aufruft. Wenn ich jetzt auf die Zurück-Schaltfläche klicke, erscheint das Fragment f2.

Ich überprüft und die onCreateView wird für beide f1 und f2 aufgerufen. Was könnte dazu führen, dass f2Fragment erscheint?

Antwort

0

Sie könnten die Zurück-Taste behandeln und prüfen, ob Fragmente konzentrieren und tun den richtigen Fluss manuell

0

Ja es, indem alle das Fragment zu tun Backstack werden kann.

Wenn Backbutton drücken und CurrentFragment ist f3 dann

super.onbackPressed() zweimal sonst einmal schreiben.