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

This commit is contained in:
Dianne Hackborn
2010-08-26 16:35:09 -07:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 16 deletions

View File

@@ -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) {

View File

@@ -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);
}
});
}