Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 363e035f authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "Fix issue #2950374: Fragment#setHasOptionsMenu() doesn't work..."

parents eb3c5442 5f36c96f
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -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;
        }
        
        if (doStateMove) {
            mManager.moveToState(mManager.mCurState,
                    FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle, true);
        if (mManager.mNeedMenuInvalidate && mManager.mActivity != null) {
            mManager.mActivity.invalidateOptionsMenu();
            mManager.mNeedMenuInvalidate = false;
        }

        if (mIndex >= 0) {
+9 −6
Original line number Diff line number Diff line
@@ -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<states.size(); i++) {
                    final int LAST = states.size()-1;
                    for (int i=0; i<=LAST; i++) {
                        if (DEBUG) Log.v(TAG, "Popping back stack state: " + states.get(i));
                        states.get(i).popFromBackStack();
                        states.get(i).popFromBackStack(i == LAST);
                    }
                    moveToState(mCurState, true);
                }
            });
        }