Ich füge Fragment (Home-Fragment) in Activity.onCreate()
, ohne es Backstack hinzufügen, mache ich es mit FragmentTransaction.replace()
. Danach füge ich jedes nächste Fragment mit FragmentTransaction.replace()
hinzu und füge es dem Backstack hinzu.Fragment ist nicht sichtbar nach Popbackstack
Ich habe eine Funktionalität, die den Backstack löscht, lassen Sie das Fragment sichtbar, um es zu tun, verwende ich FragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
.
Wenn ich nur 1 Fragment zum Backstack hinzufüge und dann das Backstack lösche, funktioniert es gut, aber wenn ich mehr als eins hinzufüge, dann ist nach dem Löschen des Backstacks der Bildschirm leer, obwohl das Home-Fragment onStart() und onResume() empfängt und denke, es ist sichtbar, es erhält nicht onPause(), onStop(), bis ich ein weiteres Fragment hinzufügen oder die App verlassen. Auch wenn ich popBackstack()
eins nach dem anderen (auf Benutzeraktion) funktioniert es gut, aber wenn ich popBackstack()
in Schleife (alle Fragmente auf einmal knallen) funktioniert es nicht.
Hier ist der Code:
public void changeFragment(BaseFragment fragment, boolean addToBackStack, boolean preventDuplicate) {
Fragment topFragment = getSupportFragmentManager().findFragmentById(fragmentContainer.getId());
if (preventDuplicate && topFragment != null && fragment.getClass().equals(topFragment.getClass())) {
//Prevent adding same fragment
return;
}
FragmentTransaction transaction =
fragmentManager
.beginTransaction()
.replace(fragmentContainer.getId(), fragment);
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.commit();
}
public void goToHome() {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
Try 'fragmentManager.popBackStackImmediate()' –
@KamranAhmed es hat nicht – FullRandom