diff --git a/core/java/android/app/BackStackEntry.java b/core/java/android/app/BackStackEntry.java index 520e4fd586dd3..00c2fc476900b 100644 --- a/core/java/android/app/BackStackEntry.java +++ b/core/java/android/app/BackStackEntry.java @@ -410,17 +410,13 @@ final class BackStackEntry implements FragmentTransaction, Runnable { mManager.moveToState(mManager.mCurState, mTransition, mTransitionStyle, true); - if (mManager.mNeedMenuInvalidate && mManager.mActivity != null) { - mManager.mActivity.invalidateOptionsMenu(); - mManager.mNeedMenuInvalidate = false; - } if (mAddToBackStack) { mManager.addBackStackState(this); } } - public void popFromBackStack() { + public void popFromBackStack(boolean doStateMove) { if (FragmentManagerImpl.DEBUG) Log.v(TAG, "popFromBackStack: " + this); bumpBackStackNesting(-1); @@ -472,11 +468,9 @@ final class BackStackEntry implements FragmentTransaction, Runnable { op = op.prev; } - mManager.moveToState(mManager.mCurState, - FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle, true); - if (mManager.mNeedMenuInvalidate && mManager.mActivity != null) { - mManager.mActivity.invalidateOptionsMenu(); - mManager.mNeedMenuInvalidate = false; + if (doStateMove) { + mManager.moveToState(mManager.mCurState, + FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle, true); } if (mIndex >= 0) { diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index c63233e4b6493..7641f619745de 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -511,6 +511,11 @@ final class FragmentManagerImpl implements FragmentManager { moveToState(f, newState, transit, transitStyle); } } + + if (mNeedMenuInvalidate && mActivity != null) { + mActivity.invalidateOptionsMenu(); + mNeedMenuInvalidate = false; + } } } @@ -800,9 +805,7 @@ final class FragmentManagerImpl implements FragmentManager { enqueueAction(new Runnable() { public void run() { if (DEBUG) Log.v(TAG, "Popping back stack state: " + bss); - bss.popFromBackStack(); - moveToState(mCurState, reverseTransit(bss.getTransition()), - bss.getTransitionStyle(), true); + bss.popFromBackStack(true); } }); } else { @@ -848,11 +851,11 @@ final class FragmentManagerImpl implements FragmentManager { } enqueueAction(new Runnable() { public void run() { - for (int i=0; i