diff options
| author | Adam Powell <adamp@google.com> | 2011-08-01 17:20:06 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-01 17:20:06 -0700 |
| commit | b1eaf8f5527a7d587cf1e3feedd9638ea8370d18 (patch) | |
| tree | 441ac627d7bba6d861245fb7a95555f51191112f /core/java | |
| parent | 34e1fb1ee229a7e033dcd42f4efd194e1614d5ce (diff) | |
| parent | f0f5fffc6f578f531df7b208cfbfb53f884c0380 (diff) | |
Merge "Fix bug 5090996 - Crash on tapping Menu on dial pad"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/Fragment.java | 8 | ||||
| -rw-r--r-- | core/java/android/app/FragmentManager.java | 17 |
2 files changed, 20 insertions, 5 deletions
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java index 371e7ad01435..a8621f895f8a 100644 --- a/core/java/android/app/Fragment.java +++ b/core/java/android/app/Fragment.java @@ -30,14 +30,14 @@ import android.util.AttributeSet; import android.util.DebugUtils; import android.util.SparseArray; import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup; -import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnCreateContextMenuListener; +import android.view.ViewGroup; import android.widget.AdapterView; import java.io.FileDescriptor; @@ -883,8 +883,8 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene public void setHasOptionsMenu(boolean hasMenu) { if (mHasMenu != hasMenu) { mHasMenu = hasMenu; - if (isAdded() && !isHidden() && isResumed()) { - mActivity.invalidateOptionsMenu(); + if (isAdded() && !isHidden()) { + mFragmentManager.invalidateOptionsMenu(); } } } diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index c33ab2ca61d7..712b55f0de13 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -315,6 +315,12 @@ public abstract class FragmentManager { public static void enableDebugLogging(boolean enabled) { FragmentManagerImpl.DEBUG = enabled; } + + /** + * Invalidate the attached activity's options menu as necessary. + * This may end up being deferred until we move to the resumed state. + */ + public void invalidateOptionsMenu() { } } final class FragmentManagerState implements Parcelable { @@ -1816,7 +1822,16 @@ final class FragmentManagerImpl extends FragmentManager { } } } - + + @Override + public void invalidateOptionsMenu() { + if (mActivity != null && mCurState == Fragment.RESUMED) { + mActivity.invalidateOptionsMenu(); + } else { + mNeedMenuInvalidate = true; + } + } + public static int reverseTransit(int transit) { int rev = 0; switch (transit) { |
