diff options
| author | Dianne Hackborn <hackbod@google.com> | 2012-05-18 19:39:09 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-18 19:39:09 -0700 |
| commit | 13a0271cb81d497edbf93f3d6ecf4b9b8da4ee69 (patch) | |
| tree | 51d79f6a8b204a058cf9c39afadfb4df7d1490f4 /core/java | |
| parent | 35013d0e8be6b67c6a0161b8472496a825657944 (diff) | |
| parent | 9275197d35a99c3f187d18d0eda6ead3b8a32603 (diff) | |
Merge "Add aapt support for generating proguard rules for onClick methods." into jb-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/Activity.java | 2 | ||||
| -rw-r--r-- | core/java/android/view/MenuInflater.java | 29 |
2 files changed, 23 insertions, 8 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index faf946c7f7ba..f20fd337695f 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -3273,7 +3273,7 @@ public class Activity extends ContextThemeWrapper if (mMenuInflater == null) { initActionBar(); if (mActionBar != null) { - mMenuInflater = new MenuInflater(mActionBar.getThemedContext()); + mMenuInflater = new MenuInflater(mActionBar.getThemedContext(), this); } else { mMenuInflater = new MenuInflater(this); } diff --git a/core/java/android/view/MenuInflater.java b/core/java/android/view/MenuInflater.java index c46e43a74a30..a7ee12b8558b 100644 --- a/core/java/android/view/MenuInflater.java +++ b/core/java/android/view/MenuInflater.java @@ -65,6 +65,7 @@ public class MenuInflater { private final Object[] mActionProviderConstructorArguments; private Context mContext; + private Object mRealOwner; /** * Constructs a menu inflater. @@ -73,6 +74,20 @@ public class MenuInflater { */ public MenuInflater(Context context) { mContext = context; + mRealOwner = context; + mActionViewConstructorArguments = new Object[] {context}; + mActionProviderConstructorArguments = mActionViewConstructorArguments; + } + + /** + * Constructs a menu inflater. + * + * @see Activity#getMenuInflater() + * @hide + */ + public MenuInflater(Context context, Object realOwner) { + mContext = context; + mRealOwner = realOwner; mActionViewConstructorArguments = new Object[] {context}; mActionProviderConstructorArguments = mActionViewConstructorArguments; } @@ -190,12 +205,12 @@ public class MenuInflater { implements MenuItem.OnMenuItemClickListener { private static final Class<?>[] PARAM_TYPES = new Class[] { MenuItem.class }; - private Context mContext; + private Object mRealOwner; private Method mMethod; - public InflatedOnMenuItemClickListener(Context context, String methodName) { - mContext = context; - Class<?> c = context.getClass(); + public InflatedOnMenuItemClickListener(Object realOwner, String methodName) { + mRealOwner = realOwner; + Class<?> c = realOwner.getClass(); try { mMethod = c.getMethod(methodName, PARAM_TYPES); } catch (Exception e) { @@ -210,9 +225,9 @@ public class MenuInflater { public boolean onMenuItemClick(MenuItem item) { try { if (mMethod.getReturnType() == Boolean.TYPE) { - return (Boolean) mMethod.invoke(mContext, item); + return (Boolean) mMethod.invoke(mRealOwner, item); } else { - mMethod.invoke(mContext, item); + mMethod.invoke(mRealOwner, item); return true; } } catch (Exception e) { @@ -400,7 +415,7 @@ public class MenuInflater { + "be used within a restricted context"); } item.setOnMenuItemClickListener( - new InflatedOnMenuItemClickListener(mContext, itemListenerMethodName)); + new InflatedOnMenuItemClickListener(mRealOwner, itemListenerMethodName)); } if (item instanceof MenuItemImpl) { |
