Skip to content Skip to sidebar Skip to footer

Back Press Fragments Issue In Android

I have four Fragments: A, B, C, D. Now I am moving from A --> B so my code will be from A to B getActivity().getSupportFragmentManager() .beginTransaction() .replace(R.

Solution 1:

You have to provide same String value for addToBackStack for single Stack.

.replace(R.id.content_frame, newB())
.addToBackStack("stack") 

.replace(R.id.content_frame, newC())
.addToBackStack("stack") 

Solution 2:

Here is the code of BackStackChangedListener.

publicstaticvoidperformNoBackStackTransaction( final FragmentManager fragmentManager, String tag, Fragment fragment) {
    finalintnewBackStackLength= fragmentManager.getBackStackEntryCount() +1;

    fragmentManager.beginTransaction()
            .replace(R.id.content_frame, fragment, tag)
            .addToBackStack(tag)
            .commit();

    fragmentManager.addOnBackStackChangedListener(newFragmentManager.OnBackStackChangedListener() {
        @OverridepublicvoidonBackStackChanged() {
            intnowCount= fragmentManager.getBackStackEntryCount();
            if (newBackStackLength != nowCount) {
                // we don't really care if going back or forward. we already performed the logic here.
                fragmentManager.removeOnBackStackChangedListener(this);

                if ( newBackStackLength > nowCount ) { // user pressed back
                    fragmentManager.popBackStackImmediate();
                }
            }
        }
    });
}

Post a Comment for "Back Press Fragments Issue In Android"