Ich versuche, Fragmente auf sehr einfache Weise zu verwalten. Ich habe eine Dienstprogrammklasse erstellt, die Fragmente zum Backstack hinzufügt, und wenn wir die Zurück-Schaltfläche drücken, wird das vorherige Fragment angezeigt. Ich bin damit einverstanden. Aber wenn ich versuche, alle Fragmente zu entfernen und das Wurzelfragment zu zeigen, kann ich das nicht richtig tun. Folgende ist meine Utility-Klasse:Wie man Fragmente im Backstack verwaltet?
public class FragmentUtil {
private FragmentUtil() {
}
public static void animatedReplace(FragmentActivity activity, int containerId, Fragment fragment, Bundle args, boolean addToBackStack){
FragmentTransaction transaction=activity.getSupportFragmentManager().beginTransaction();
fragment.setArguments(args);
if(addToBackStack){
transaction.addToBackStack(fragment.getClass().getName());
}
transaction.setCustomAnimations(R.anim.slide_from_right, R.anim.slide_to_left,R.anim.slide_from_left,R.anim.slide_to_right);
transaction.replace(containerId,fragment);
transaction.commit();
}
public static void clearBackStackToHome(FragmentActivity activity){
FragmentManager manager = activity.getSupportFragmentManager();
manager.popBackStack(DashboardFragment.class.getName(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
Wenn ich zu einem anderen Fragment möchte ich nur passieren "true" für addToStack in animatedReplace Verfahren. Wenn ich den Backstack löschen möchte, übergebe ich "false" und rufe die clearBackStackToHome-Methode auf. Kann mir jemand helfen, was ich falsch mache?
Hallo rafsanahmad007! Die Lösung funktioniert ziemlich gut. Aber, wie man es auf onBackPressed() implementiert? –
@HiteshPamnani Ich habe die Antwort bearbeitet .. – rafsanahmad007
Es wird jedes Mal passieren, wenn der Benutzer zurück Knopf tippt. Ich möchte nur nach einem bestimmten Prozess passieren. Beispielsweise kann der Benutzer nach Abschluss des Zahlungsvorgangs auf die Schaltfläche Zurück tippen und zu einem Stammfragment navigieren. –