I’d like for my menu button in my main activity to be open at all times. I’ve used:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
openOptionsMenu();
}
which opens the menu when I go to the Activity. However, when I press the menu botton option to go to another activity and press the back button, the menu goes away and requires that I press the “menu” key to get it back. I’d like for the menu to stay open at all times for this particular activity.
I’ve tried to override the Activity’s onBackPressed:
@Override
public void onBackPressed(){
super.onBackPressed();
this.openOptionsMenu();
}
And I’ve tried adding this.openOptionsMenu in the onCreate. When I do that, my application crashes with the error:
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): FATAL EXCEPTION: main
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cmu.community/com.cmu.community.HomeActivity}: android.view.WindowManager$BadTokenException: Unable to add window — token null is not valid; is your activity running?
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.os.Looper.loop(Looper.java:123)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at java.lang.reflect.Method.invokeNative(Native Method)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at java.lang.reflect.Method.invoke(Method.java:521)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at dalvik.system.NativeStart.main(Native Method)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): Caused by: android.view.WindowManager$BadTokenException: Unable to add window — token null is not valid; is your activity running?
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.view.ViewRoot.setView(ViewRoot.java:505)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.view.Window$LocalWindowManager.addView(Window.java:424)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:463)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:378)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.Activity.openOptionsMenu(Activity.java:2330)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at com.cmu.community.HomeActivity.onCreate(HomeActivity.java:105)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-17 09:19:46.674: ERROR/AndroidRuntime(4940): … 11 more
Does anyone have a solution for this?
Options menu is for actions that you want to be hidden. Add buttons to your layout for the actions that you want to always be accessible.
Options menu was really not designed for what you want it to do. Thus if you solve your current problem in some way, your QA (or users) will soon find other problems for you to solve.