2017-08-15 1 views
0

Wenn ich zwei Fragmente habe, die in einem Frame-Layout mit "add" -Transaktion aufeinander gestapelt werden, wie kann ich wissen, was der Rückruf ist, wenn man entfernt wird.Android-Fragmente - wenn ich zwei Fragmente übereinander hinzufügen, was ist Callback, wenn Top-eins entfernt wird?

so stelle ich mir ein framelayout wie dieses:

<FrameLayout 
          android:id="@+id/fl_cart_address" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:elevation="4dp"/> 

und dann füge ich zwei Fragmente wie folgt aus:

mFragment = new ExampleOneFragment(); 
       FragmentTransaction ft = getFragmentManager().beginTransaction(); 
       ft.add(R.id.fl_cart_address, mFragment).commit(); 

       mFragment = new ExampleTwoFragment(); 
          FragmentTransaction ft = getFragmentManager().beginTransaction(); 
          ft.add(R.id.fl_cart_address, mFragment).commit(); 

jetzt, wenn ich die Zurück-Taste drücken Sie dann ist fragmentTwo gegangen. aber welchen Rückruf kann ich in FragmentOne bekommen, damit ich weiß, dass es tatsächlich weg ist? Im Grunde brauche ich nur einen Callback, wenn das oberste Fragment vom Backstack entfernt wird. Ich versuchte onResume, aber es funktioniert nicht.

Antwort

1

Verwendung FragmentManager.OnBackStackChangedListener

einen Rückruf registrieren FragmentManager.addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener listener)

es sendet Ihnen einen Rückruf zu verwenden, wenn der Backstack verändert.

+0

Wie Sie im Beispiel sehen, füge ich diese nicht zum backstack hinzu. Ich frage mich, ob es einen anderen Weg gibt, da der Callback nicht funktionieren wird, oder? – j2emanue

+0

es wird an der Backtack sowieso hinzugefügt –

+0

Seine Zündung für jede Änderung. Ich will nur wissen, wenn Beispieltwofragment gepoppt wird. Kannst du Code schreiben? Ich habe versucht, das Etikett zu betrachten. Kannst du es versuchen – j2emanue

Verwandte Themen