diff options
| -rw-r--r-- | core/java/com/android/internal/view/menu/ListMenuPresenter.java | 4 | ||||
| -rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindow.java | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/core/java/com/android/internal/view/menu/ListMenuPresenter.java b/core/java/com/android/internal/view/menu/ListMenuPresenter.java index 146c7ac8a3e0..e6538b020950 100644 --- a/core/java/com/android/internal/view/menu/ListMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ListMenuPresenter.java @@ -34,6 +34,8 @@ import java.util.ArrayList; * MenuPresenter for list-style menus. */ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClickListener { + private static final String TAG = "ListMenuPresenter"; + Context mContext; LayoutInflater mInflater; MenuBuilder mMenu; @@ -76,7 +78,7 @@ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClick public void initForMenu(Context context, MenuBuilder menu) { if (mThemeRes != 0) { mContext = new ContextThemeWrapper(context, mThemeRes); - } else if (mContext == null) { + } else if (mContext != null) { mContext = context; } mInflater = LayoutInflater.from(mContext); diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index b69a7c27376a..f5e3a4502d60 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -384,7 +384,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { st.menu.stopDispatchingItemsChanged(); if ((cb == null) || !cb.onCreatePanelMenu(st.featureId, st.menu)) { // Ditch the menu created above - st.menu = null; + st.setMenu(null); if (mActionBar != null) { // Don't show it in the action bar either @@ -3207,7 +3207,17 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } void setMenu(MenuBuilder menu) { + if (menu == this.menu) return; + + if (this.menu != null) { + this.menu.removeMenuPresenter(iconMenuPresenter); + this.menu.removeMenuPresenter(listMenuPresenter); + } this.menu = menu; + if (menu != null) { + if (iconMenuPresenter != null) menu.addMenuPresenter(iconMenuPresenter); + if (listMenuPresenter != null) menu.addMenuPresenter(listMenuPresenter); + } } MenuView getListMenuView(MenuPresenter.Callback cb) { |