diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java b/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java index 5fb8af95..b2001fa0 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStack.java @@ -62,6 +62,15 @@ public class ScreenStack extends ScreenContainer { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); getFragmentManager().removeOnBackStackChangedListener(mBackStackListener); + getFragmentManager().popBackStack(BACK_STACK_TAG, FragmentManager.POP_BACK_STACK_INCLUSIVE); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if (mTopScreen != null) { + setupBackHandlerIfNeeded(mTopScreen); + } } @Override @@ -194,13 +203,13 @@ public class ScreenStack extends ScreenContainer { } } if (topScreen != firstScreen && topScreen.isDismissable()) { - getFragmentManager().addOnBackStackChangedListener(mBackStackListener); getFragmentManager() .beginTransaction() .hide(topScreen) .show(topScreen) .addToBackStack(BACK_STACK_TAG) - .commit(); + .commitAllowingStateLoss(); + getFragmentManager().addOnBackStackChangedListener(mBackStackListener); } } }