Merge "Fix issue #2950374: Fragment#setHasOptionsMenu() doesn't work..."
This commit is contained in:
committed by
Android (Google) Code Review
commit
363e035f5f
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user