<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="60" android:versionName="4.0.2" package="com.actionbarsherlock">
-
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="90" android:versionName="4.1.0" package="com.actionbarsherlock">
+
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15"/>
</manifest>
#
# This file must be checked in Version Control Systems.
#
-# To customize properties used by the Ant build system edit
+# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt
-# Project target.
-target=android-15
android.library=true
+# Project target.
+target=android-14
--- /dev/null
+package android.support.v4.app;
+
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener;
+import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener;
+import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener;
+import com.actionbarsherlock.view.Menu;
+import com.actionbarsherlock.view.MenuInflater;
+import com.actionbarsherlock.view.MenuItem;
+
+import java.util.ArrayList;
+
+/** I'm in ur package. Stealing ur variables. */
+public abstract class _ActionBarSherlockTrojanHorse extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener {
+ private static final boolean DEBUG = false;
+ private static final String TAG = "_ActionBarSherlockTrojanHorse";
+
+ /** Fragment interface for menu creation callback. */
+ public interface OnCreateOptionsMenuListener {
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater);
+ }
+ /** Fragment interface for menu preparation callback. */
+ public interface OnPrepareOptionsMenuListener {
+ public void onPrepareOptionsMenu(Menu menu);
+ }
+ /** Fragment interface for menu item selection callback. */
+ public interface OnOptionsItemSelectedListener {
+ public boolean onOptionsItemSelected(MenuItem item);
+ }
+
+ private ArrayList<Fragment> mCreatedMenus;
+
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Sherlock menu handling
+ ///////////////////////////////////////////////////////////////////////////
+
+ @Override
+ public boolean onCreatePanelMenu(int featureId, Menu menu) {
+ if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
+
+ if (featureId == Window.FEATURE_OPTIONS_PANEL) {
+ boolean result = onCreateOptionsMenu(menu);
+ if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result);
+
+ MenuInflater inflater = getSupportMenuInflater();
+ boolean show = false;
+ ArrayList<Fragment> newMenus = null;
+ if (mFragments.mActive != 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 (DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + show);
+ result |= show;
+
+ if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
+ return result;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onPreparePanel(int featureId, View view, Menu menu) {
+ if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu);
+
+ if (featureId == Window.FEATURE_OPTIONS_PANEL) {
+ boolean result = onPrepareOptionsMenu(menu);
+ if (DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result);
+
+ boolean show = false;
+ if (mFragments.mActive != 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 OnPrepareOptionsMenuListener) {
+ show = true;
+ ((OnPrepareOptionsMenuListener)f).onPrepareOptionsMenu(menu);
+ }
+ }
+ }
+
+ if (DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + show);
+ result |= show;
+
+ result &= menu.hasVisibleItems();
+ if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
+ return result;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean onMenuItemSelected(int featureId, MenuItem item) {
+ if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
+
+ if (featureId == Window.FEATURE_OPTIONS_PANEL) {
+ if (onOptionsItemSelected(item)) {
+ return true;
+ }
+
+ if (mFragments.mActive != 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 OnOptionsItemSelectedListener) {
+ if (((OnOptionsItemSelectedListener)f).onOptionsItemSelected(item)) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public abstract boolean onCreateOptionsMenu(Menu menu);
+
+ public abstract boolean onPrepareOptionsMenu(Menu menu);
+
+ public abstract boolean onOptionsItemSelected(MenuItem item);
+
+ public abstract MenuInflater getSupportMenuInflater();
+}
*/\r
public void dispatchPanelClosed(int featureId, android.view.Menu menu) {}\r
\r
+ /**\r
+ * Notify the action bar that the activity has been destroyed. This method\r
+ * should be called before the superclass implementation.\r
+ *\r
+ * <blockquote><p>\r
+ * @Override\r
+ * public void onDestroy() {\r
+ * mSherlock.dispatchDestroy();\r
+ * super.onDestroy();\r
+ * }\r
+ * </p></blockquote>\r
+ */\r
+ public void dispatchDestroy() {}\r
+\r
\r
///////////////////////////////////////////////////////////////////////////\r
///////////////////////////////////////////////////////////////////////////\r
super.onStop();\r
}\r
\r
+ @Override\r
+ protected void onDestroy() {\r
+ getSherlock().dispatchDestroy();\r
+ super.onDestroy();\r
+ }\r
+\r
@Override\r
protected void onPostCreate(Bundle savedInstanceState) {\r
getSherlock().dispatchPostCreate(savedInstanceState);\r
package com.actionbarsherlock.app;
-import static com.actionbarsherlock.app.SherlockFragmentActivity.DEBUG;
import android.app.Activity;
import android.support.v4.app.DialogFragment;
-import android.util.Log;
-import com.actionbarsherlock.internal.view.menu.MenuItemMule;
-import com.actionbarsherlock.internal.view.menu.MenuMule;
+import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
+import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-public class SherlockDialogFragment extends DialogFragment {
- private static final String TAG = "SherlockDialogFragment";
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener;
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener;
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener;
+public class SherlockDialogFragment extends DialogFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity;
public SherlockFragmentActivity getSherlockActivity() {
@Override
public void onAttach(Activity activity) {
if (!(activity instanceof SherlockFragmentActivity)) {
- throw new IllegalStateException(TAG + " must be attached to a SherlockFragmentActivity.");
+ throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity.");
}
mActivity = (SherlockFragmentActivity)activity;
}
@Override
- public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
- if (DEBUG) Log.d(TAG, "[onCreateOptionsMenu] menu: " + menu + ", inflater: " + inflater);
+ public void onDetach() {
+ mActivity = null;
+ super.onDetach();
+ }
- if (menu instanceof MenuMule) {
- MenuMule mule = (MenuMule)menu;
- mule.mDispatchShow = true;
- onCreateOptionsMenu(mule.unwrap(), mActivity.getSupportMenuInflater());
- }
+ @Override
+ public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
+ onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater());
}
+ @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//Nothing to see here.
}
@Override
public final void onPrepareOptionsMenu(android.view.Menu menu) {
- if (DEBUG) Log.d(TAG, "[onPrepareOptionsMenu] menu: " + menu);
-
- if (menu instanceof MenuMule) {
- MenuMule mule = (MenuMule)menu;
- mule.mDispatchShow = true;
- onPrepareOptionsMenu(mule.unwrap());
- }
+ onPrepareOptionsMenu(new MenuWrapper(menu));
}
+ @Override
public void onPrepareOptionsMenu(Menu menu) {
//Nothing to see here.
}
@Override
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
- if (DEBUG) Log.d(TAG, "[onOptionsItemSelected] item: " + item);
-
- if (item instanceof MenuItemMule) {
- return onOptionsItemSelected(((MenuItemMule)item).unwrap());
- }
- return false;
+ return onOptionsItemSelected(new MenuItemWrapper(item));
}
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
//Nothing to see here.
return false;
super.onStop();\r
}\r
\r
+ @Override\r
+ protected void onDestroy() {\r
+ getSherlock().dispatchDestroy();\r
+ super.onDestroy();\r
+ }\r
+\r
@Override\r
protected void onPostCreate(Bundle savedInstanceState) {\r
getSherlock().dispatchPostCreate(savedInstanceState);\r
package com.actionbarsherlock.app;
-import static com.actionbarsherlock.app.SherlockFragmentActivity.DEBUG;
import android.app.Activity;
import android.support.v4.app.Fragment;
-import android.util.Log;
-import com.actionbarsherlock.internal.view.menu.MenuItemMule;
-import com.actionbarsherlock.internal.view.menu.MenuMule;
+import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
+import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-public class SherlockFragment extends Fragment {
- private static final String TAG = "SherlockFragment";
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener;
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener;
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener;
+public class SherlockFragment extends Fragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity;
public SherlockFragmentActivity getSherlockActivity() {
@Override
public void onAttach(Activity activity) {
if (!(activity instanceof SherlockFragmentActivity)) {
- throw new IllegalStateException(TAG + " must be attached to a SherlockFragmentActivity.");
+ throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity.");
}
mActivity = (SherlockFragmentActivity)activity;
}
@Override
- public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
- if (DEBUG) Log.d(TAG, "[onCreateOptionsMenu] menu: " + menu + ", inflater: " + inflater);
+ public void onDetach() {
+ mActivity = null;
+ super.onDetach();
+ }
- if (menu instanceof MenuMule) {
- MenuMule mule = (MenuMule)menu;
- mule.mDispatchShow = true;
- onCreateOptionsMenu(mule.unwrap(), mActivity.getSupportMenuInflater());
- }
+ @Override
+ public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
+ onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater());
}
+ @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//Nothing to see here.
}
@Override
public final void onPrepareOptionsMenu(android.view.Menu menu) {
- if (DEBUG) Log.d(TAG, "[onPrepareOptionsMenu] menu: " + menu);
-
- if (menu instanceof MenuMule) {
- MenuMule mule = (MenuMule)menu;
- mule.mDispatchShow = true;
- onPrepareOptionsMenu(mule.unwrap());
- }
+ onPrepareOptionsMenu(new MenuWrapper(menu));
}
+ @Override
public void onPrepareOptionsMenu(Menu menu) {
//Nothing to see here.
}
@Override
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
- if (DEBUG) Log.d(TAG, "[onOptionsItemSelected] item: " + item);
-
- if (item instanceof MenuItemMule) {
- return onOptionsItemSelected(((MenuItemMule)item).unwrap());
- }
- return false;
+ return onOptionsItemSelected(new MenuItemWrapper(item));
}
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
//Nothing to see here.
return false;
import android.content.res.Configuration;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
+import android.support.v4.app._ActionBarSherlockTrojanHorse;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import com.actionbarsherlock.ActionBarSherlock;
-import com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener;
-import com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener;
-import com.actionbarsherlock.ActionBarSherlock.OnCreatePanelMenuListener;
-import com.actionbarsherlock.ActionBarSherlock.OnMenuItemSelectedListener;
-import com.actionbarsherlock.ActionBarSherlock.OnPreparePanelListener;
-import com.actionbarsherlock.internal.view.menu.MenuItemMule;
-import com.actionbarsherlock.internal.view.menu.MenuMule;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-public abstract class SherlockFragmentActivity extends FragmentActivity implements OnCreatePanelMenuListener, OnPreparePanelListener, OnMenuItemSelectedListener, OnActionModeStartedListener, OnActionModeFinishedListener {
- static final boolean DEBUG = false;
+import static com.actionbarsherlock.ActionBarSherlock.OnActionModeFinishedListener;
+import static com.actionbarsherlock.ActionBarSherlock.OnActionModeStartedListener;
+
+/** @see {@link _ActionBarSherlockTrojanHorse} */
+public class SherlockFragmentActivity extends _ActionBarSherlockTrojanHorse implements OnActionModeStartedListener, OnActionModeFinishedListener {
+ private static final boolean DEBUG = false;
private static final String TAG = "SherlockFragmentActivity";
private ActionBarSherlock mSherlock;
super.onStop();
}
+ @Override
+ protected void onDestroy() {
+ getSherlock().dispatchDestroy();
+ super.onDestroy();
+ }
+
@Override
protected void onPostCreate(Bundle savedInstanceState) {
getSherlock().dispatchPostCreate(savedInstanceState);
// Sherlock menu handling
///////////////////////////////////////////////////////////////////////////
- @Override
- public boolean onCreatePanelMenu(int featureId, Menu menu) {
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] featureId: " + featureId + ", menu: " + menu);
-
- if (featureId == Window.FEATURE_OPTIONS_PANEL) {
- boolean result = onCreateOptionsMenu(menu);
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] activity create result: " + result);
-
- //Dispatch to parent panel creation for fragment dispatching
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] dispatching to native with mule");
- MenuMule mule = new MenuMule(menu);
- super.onCreatePanelMenu(featureId, mule);
-
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] fragments create result: " + mule.mDispatchShow);
- result |= mule.mDispatchShow;
-
- if (DEBUG) Log.d(TAG, "[onCreatePanelMenu] returning " + result);
- return result;
- }
- return false;
- }
-
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
- @Override
- public boolean onPreparePanel(int featureId, View view, Menu menu) {
- if (DEBUG) Log.d(TAG, "[onPreparePanel] featureId: " + featureId + ", view: " + view + " menu: " + menu);
-
- if (featureId == Window.FEATURE_OPTIONS_PANEL) {
- boolean result = onPrepareOptionsMenu(menu);
- if (DEBUG) Log.d(TAG, "[onPreparePanel] activity prepare result: " + result);
-
- //Dispatch to parent panel preparation for fragment dispatching
- if (DEBUG) Log.d(TAG, "[onPreparePanel] dispatching to native with mule");
- MenuMule mule = new MenuMule(menu);
- super.onPreparePanel(featureId, view, mule);
-
- if (DEBUG) Log.d(TAG, "[onPreparePanel] fragments prepare result: " + mule.mDispatchShow);
- result |= mule.mDispatchShow;
-
- result &= menu.hasVisibleItems();
- if (DEBUG) Log.d(TAG, "[onPreparePanel] returning " + result);
- return result;
- }
- return false;
- }
-
public boolean onPrepareOptionsMenu(Menu menu) {
return true;
}
- @Override
- public boolean onMenuItemSelected(int featureId, MenuItem item) {
- if (DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item);
-
- if (featureId == Window.FEATURE_OPTIONS_PANEL) {
- if (onOptionsItemSelected(item)) {
- return true;
- }
-
- //Dispatch to parent panel selection for fragment dispatching
- if (DEBUG) Log.d(TAG, "[onMenuItemSelected] dispatching to native with mule");
- return super.onMenuItemSelected(featureId, new MenuItemMule(item));
- }
- return false;
- }
-
public boolean onOptionsItemSelected(MenuItem item) {
return false;
}
super.onStop();\r
}\r
\r
+ @Override\r
+ protected void onDestroy() {\r
+ getSherlock().dispatchDestroy();\r
+ super.onDestroy();\r
+ }\r
+\r
@Override\r
protected void onPostCreate(Bundle savedInstanceState) {\r
getSherlock().dispatchPostCreate(savedInstanceState);\r
package com.actionbarsherlock.app;
-import static com.actionbarsherlock.app.SherlockFragmentActivity.DEBUG;
import android.app.Activity;
import android.support.v4.app.ListFragment;
-import android.util.Log;
-import com.actionbarsherlock.internal.view.menu.MenuItemMule;
-import com.actionbarsherlock.internal.view.menu.MenuMule;
+import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
+import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-public class SherlockListFragment extends ListFragment {
- private static final String TAG = "SherlockListFragment";
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnCreateOptionsMenuListener;
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnOptionsItemSelectedListener;
+import static com.actionbarsherlock.app.SherlockFragmentActivity.OnPrepareOptionsMenuListener;
+public class SherlockListFragment extends ListFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
private SherlockFragmentActivity mActivity;
public SherlockFragmentActivity getSherlockActivity() {
@Override
public void onAttach(Activity activity) {
if (!(activity instanceof SherlockFragmentActivity)) {
- throw new IllegalStateException(TAG + " must be attached to a SherlockFragmentActivity.");
+ throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity.");
}
mActivity = (SherlockFragmentActivity)activity;
}
@Override
- public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
- if (DEBUG) Log.d(TAG, "[onCreateOptionsMenu] menu: " + menu + ", inflater: " + inflater);
+ public void onDetach() {
+ mActivity = null;
+ super.onDetach();
+ }
- if (menu instanceof MenuMule) {
- MenuMule mule = (MenuMule)menu;
- mule.mDispatchShow = true;
- onCreateOptionsMenu(mule.unwrap(), mActivity.getSupportMenuInflater());
- }
+ @Override
+ public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
+ onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater());
}
+ @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//Nothing to see here.
}
@Override
public final void onPrepareOptionsMenu(android.view.Menu menu) {
- if (DEBUG) Log.d(TAG, "[onPrepareOptionsMenu] menu: " + menu);
-
- if (menu instanceof MenuMule) {
- MenuMule mule = (MenuMule)menu;
- mule.mDispatchShow = true;
- onPrepareOptionsMenu(mule.unwrap());
- }
+ onPrepareOptionsMenu(new MenuWrapper(menu));
}
+ @Override
public void onPrepareOptionsMenu(Menu menu) {
//Nothing to see here.
}
@Override
public final boolean onOptionsItemSelected(android.view.MenuItem item) {
- if (DEBUG) Log.d(TAG, "[onOptionsItemSelected] item: " + item);
-
- if (item instanceof MenuItemMule) {
- return onOptionsItemSelected(((MenuItemMule)item).unwrap());
- }
- return false;
+ return onOptionsItemSelected(new MenuItemWrapper(item));
}
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
//Nothing to see here.
return false;
super.onStop();\r
}\r
\r
+ @Override\r
+ protected void onDestroy() {\r
+ getSherlock().dispatchDestroy();\r
+ super.onDestroy();\r
+ }\r
+\r
@Override\r
protected void onPostCreate(Bundle savedInstanceState) {\r
getSherlock().dispatchPostCreate(savedInstanceState);\r
/** Whether or not the title is stable and can be displayed. */
private boolean mIsTitleReady = false;
+ /** Whether or not the parent activity has been destroyed. */
+ private boolean mIsDestroyed = false;
/* Emulate PanelFeatureState */
private boolean mClosingActionMenu;
}
// Next collapse any expanded action views.
- if (aActionBar != null && wActionBar.hasExpandedActionView()) {
+ if (wActionBar != null && wActionBar.hasExpandedActionView()) {
if (action == KeyEvent.ACTION_UP) {
wActionBar.collapseActionView();
}
mMenuKeyIsLongPress = true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
if (!mMenuKeyIsLongPress) {
- if (mActionMode == null) {
+ if (mActionMode == null && wActionBar != null) {
if (wActionBar.isOverflowMenuShowing()) {
wActionBar.hideOverflowMenu();
} else {
return result;
}
+ @Override
+ public void dispatchDestroy() {
+ mIsDestroyed = true;
+ }
+
///////////////////////////////////////////////////////////////////////////
// Menu callback lifecycle and creation
@Override
public void run() {
//Invalidate if the panel menu hasn't been created before this.
- if (!mActivity.isFinishing() && mMenu == null) {
+ if (!mIsDestroyed && !mActivity.isFinishing() && mMenu == null) {
dispatchInvalidateOptionsMenu();
}
}
public TabWrapper(android.app.ActionBar.Tab nativeTab) {
mNativeTab = nativeTab;
mNativeTab.setTag(this);
- mNativeTab.setTabListener(this);
}
@Override
@Override
public Tab setTabListener(TabListener listener) {
+ mNativeTab.setTabListener(listener != null ? this : null);
mListener = listener;
return this;
}
return;
}
+ view.setAnimation(this);
+
final RectF after = mAfter;
computeRect(after, view);
after.union(mBefore);
transformMatrix(t.getMatrix(), view);
}
}
+
+ @Override
+ public void reset() {
+ /* Do nothing. */
+ }
}
+++ /dev/null
-package com.actionbarsherlock.internal.view.menu;
-
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.view.ActionProvider;
-import android.view.MenuItem;
-import android.view.SubMenu;
-import android.view.View;
-import android.view.ContextMenu.ContextMenuInfo;
-
-/** Used to carry an instance of our version of MenuItem through a native channel. */
-public class MenuItemMule implements MenuItem {
- private static final String ERROR = "Cannot interact with object designed for temporary "
- + "instance passing. Make sure you using both SherlockFragmentActivity and "
- + "SherlockFragment.";
-
-
- private final com.actionbarsherlock.view.MenuItem mItem;
-
- public MenuItemMule(com.actionbarsherlock.view.MenuItem item) {
- mItem = item;
- }
-
- public com.actionbarsherlock.view.MenuItem unwrap() {
- return mItem;
- }
-
-
- @Override
- public boolean collapseActionView() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean expandActionView() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public ActionProvider getActionProvider() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public View getActionView() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public char getAlphabeticShortcut() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public int getGroupId() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public Drawable getIcon() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public Intent getIntent() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public int getItemId() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public ContextMenuInfo getMenuInfo() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public char getNumericShortcut() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public int getOrder() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public SubMenu getSubMenu() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public CharSequence getTitle() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public CharSequence getTitleCondensed() {
- return mItem.getTitleCondensed();
- //throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean hasSubMenu() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean isActionViewExpanded() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean isCheckable() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean isChecked() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean isEnabled() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean isVisible() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setActionProvider(ActionProvider arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setActionView(View arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setActionView(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setAlphabeticShortcut(char arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setCheckable(boolean arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setChecked(boolean arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setEnabled(boolean arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setIcon(Drawable arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setIcon(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setIntent(Intent arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setNumericShortcut(char arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setOnActionExpandListener(OnActionExpandListener arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setOnMenuItemClickListener(OnMenuItemClickListener arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setShortcut(char arg0, char arg1) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void setShowAsAction(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setShowAsActionFlags(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setTitle(CharSequence arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setTitle(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setTitleCondensed(CharSequence arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem setVisible(boolean arg0) {
- throw new IllegalStateException(ERROR);
- }
-}
+++ /dev/null
-package com.actionbarsherlock.internal.view.menu;
-
-import android.content.ComponentName;
-import android.content.Intent;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.SubMenu;
-
-/** Used to carry an instance of our version of Menu through a native channel. */
-public class MenuMule implements Menu {
- private static final String ERROR = "Cannot interact with object designed for temporary "
- + "instance passing. Make sure you using both SherlockFragmentActivity and "
- + "SherlockFragment.";
-
-
- private final com.actionbarsherlock.view.Menu mMenu;
- public boolean mDispatchShow = false;
-
- public MenuMule(com.actionbarsherlock.view.Menu menu) {
- mMenu = menu;
- }
-
- public com.actionbarsherlock.view.Menu unwrap() {
- return mMenu;
- }
-
-
- @Override
- public MenuItem add(CharSequence arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem add(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem add(int arg0, int arg1, int arg2, CharSequence arg3) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem add(int arg0, int arg1, int arg2, int arg3) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public int addIntentOptions(int arg0, int arg1, int arg2,
- ComponentName arg3, Intent[] arg4, Intent arg5, int arg6,
- MenuItem[] arg7) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public SubMenu addSubMenu(CharSequence arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public SubMenu addSubMenu(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public SubMenu addSubMenu(int arg0, int arg1, int arg2, CharSequence arg3) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public SubMenu addSubMenu(int arg0, int arg1, int arg2, int arg3) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void clear() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void close() {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem findItem(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public MenuItem getItem(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean hasVisibleItems() {
- return mMenu.hasVisibleItems();
- //throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean isShortcutKey(int arg0, KeyEvent arg1) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean performIdentifierAction(int arg0, int arg1) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public boolean performShortcut(int arg0, KeyEvent arg1, int arg2) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void removeGroup(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void removeItem(int arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void setGroupCheckable(int arg0, boolean arg1, boolean arg2) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void setGroupEnabled(int arg0, boolean arg1) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void setGroupVisible(int arg0, boolean arg1) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public void setQwertyMode(boolean arg0) {
- throw new IllegalStateException(ERROR);
- }
-
- @Override
- public int size() {
- throw new IllegalStateException(ERROR);
- }
-}