@Override public boolean onCreatePanelMenu(int featureId, Menu menu) { if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu); if (featureId == Window.FEATURE_OPTIONS_PANEL) { boolean result = onCreateOptionsMenu(menu); if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result); MenuInflater inflater = getSupportMenuInflater(); boolean show = false; ArrayList<Fragment> newMenus = null; if (mFragments.mAdded != null) { for (int i = 0; i < mFragments.mAdded.size(); i++) { Fragment f = mFragments.mAdded.get(i); if (f != null && !f.mHidden && f.mHasMenu && f.mMenuVisible && f instanceof OnCreateOptionsMenuListener) { show = true; ((OnCreateOptionsMenuListener) f).onCreateOptionsMenu(menu, inflater); if (newMenus == null) { newMenus = new ArrayList<Fragment>(); } newMenus.add(f); } } } if (mCreatedMenus != null) { for (int i = 0; i < mCreatedMenus.size(); i++) { Fragment f = mCreatedMenus.get(i); if (newMenus == null || !newMenus.contains(f)) { f.onDestroyOptionsMenu(); } } } mCreatedMenus = newMenus; if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show); result |= show; if (ActionBarSherlock.DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result); return result; } return false; }
@Override public void onDestroyOptionsMenu() { recLifeCycle(getClass(), CALL_TO_SUPER); super.onDestroyOptionsMenu(); recLifeCycle(getClass(), RETURN_FROM_SUPER); }