当我在一个从RelativeLayout扩展的类中时,我正在添加子菜单:
@Override
protected void onCreateContextMenu(ContextMenu menu) {
super.onCreateContextMenu(menu);
SubMenu subMenu = menu.addSubMenu("Submenu");
subMenu.add("SUB1");
subMenu.add("SUB2");
}
我正在使用以下方式显示菜单:
showContextMenu();
现在一切都很好,“Submenu”项目表现得非常好。当我点击“子菜单”项时,它会产生这个例外:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:542)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:286)
at com.android.internal.view.menu.MenuDialogHelper.show(MenuDialogHelper.java:95)
at com.android.internal.view.menu.ListMenuPresenter.onSubMenuSelected(ListMenuPresenter.java:139)
at com.android.internal.view.menu.MenuBuilder.dispatchSubMenuSelected(MenuBuilder.java:266)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:902)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:173)
at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:952)
at android.widget.AdapterView.performItemClick(AdapterView.java:302)
at android.widget.AbsListView.performItemClick(AbsListView.java:1188)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3009)
at android.widget.AbsListView$3.run(AbsListView.java:3767)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5433)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
实际上我不太了解异常,我没有看到子菜单如何显示的任何示例,我认为它会显示在弹出对话框中或类似的东西?
我需要做的是显示一个包含子项的菜单项,我不在活动中!