diff options
| -rw-r--r-- | core/java/com/android/internal/view/menu/MenuBuilder.java | 16 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/ActionBarView.java | 5 |
2 files changed, 17 insertions, 4 deletions
diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java index 7839a0847619..5e70e4c3f7c5 100644 --- a/core/java/com/android/internal/view/menu/MenuBuilder.java +++ b/core/java/com/android/internal/view/menu/MenuBuilder.java @@ -150,6 +150,11 @@ public class MenuBuilder implements Menu { private CopyOnWriteArrayList<WeakReference<MenuPresenter>> mPresenters = new CopyOnWriteArrayList<WeakReference<MenuPresenter>>(); + + /** + * Currently expanded menu item; must be collapsed when we clear. + */ + private MenuItemImpl mExpandedItem; /** * Called by menu to notify of close and selection changes. @@ -512,6 +517,9 @@ public class MenuBuilder implements Menu { } public void clear() { + if (mExpandedItem != null) { + collapseItemActionView(mExpandedItem); + } mItems.clear(); onItemsChanged(true); @@ -1223,11 +1231,14 @@ public class MenuBuilder implements Menu { } startDispatchingItemsChanged(); + if (expanded) { + mExpandedItem = item; + } return expanded; } public boolean collapseItemActionView(MenuItemImpl item) { - if (mPresenters.isEmpty()) return false; + if (mPresenters.isEmpty() || mExpandedItem != item) return false; boolean collapsed = false; @@ -1242,6 +1253,9 @@ public class MenuBuilder implements Menu { } startDispatchingItemsChanged(); + if (collapsed) { + mExpandedItem = null; + } return collapsed; } } diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 446c842d7e69..4878b0f088ac 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -1265,9 +1265,8 @@ public class ActionBarView extends AbsActionBarView { @Override public void initForMenu(Context context, MenuBuilder menu) { // Clear the expanded action view when menus change. - mExpandedActionView = null; - if (mCurrentExpandedItem != null) { - mCurrentExpandedItem.collapseActionView(); + if (mMenu != null && mCurrentExpandedItem != null) { + mMenu.collapseItemActionView(mCurrentExpandedItem); } mMenu = menu; } |