summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-08-01 17:20:06 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-01 17:20:06 -0700
commitb1eaf8f5527a7d587cf1e3feedd9638ea8370d18 (patch)
tree441ac627d7bba6d861245fb7a95555f51191112f /core/java
parent34e1fb1ee229a7e033dcd42f4efd194e1614d5ce (diff)
parentf0f5fffc6f578f531df7b208cfbfb53f884c0380 (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.java8
-rw-r--r--core/java/android/app/FragmentManager.java17
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) {