Skip fragments onBackPressed (add / hide)

I use the fragmentation function to continue the fragments, it looks like this:

        FragmentManager fm = oldFragment.getFragmentManager();
        FragmentTransaction fragmentTransaction = fm.beginTransaction();
        fragmentTransaction.add(oldFragment.getId(), newFragment, tag);
        fragmentTransaction.hide(oldFragment);
        fragmentTransaction.addToBackStack(tag);
        fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        fragmentTransaction.commit();

Having several fragments, I want to skip some of them when returning.

Example:

Frag1 → (Click Next) → Frag2 → (Click Next) → Frag3 → (Click Back) → Frag1

This solution works when I use replace instead of add and hide

getFragmentManager().popBackStack(
    tag, 
    FragmentManager.POP_BACK_STACK_INCLUSIVE);

Link Skip some fragments onBackPressed

But in my case, the missing fragments are shown for a short time. How can I make it as if fragments between them have never been?

+4
1

, , , .

public static void removeFragment(FragmentActivity activity) {
    try {
        FragmentManager supportFragmentManager = activity.getSupportFragmentManager(); // getFragmentManager();
        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
        fragmentTransaction.setCustomAnimations(R.anim.slide_down, R.anim.slide_up);
        fragmentTransaction.remove(supportFragmentManager.getFragments().get(0));

        try {
            fragmentTransaction.commit();

        } catch (Exception e) {
        }
        supportFragmentManager.popBackStack();

    } catch (NullPointerException exception) {
        exception.printStackTrace();
    }
}
0

All Articles