2016-03-24 90 views
0

我添加子菜單,而我是一個類,從RelativeLayout的延長內部:添加從視圖中點擊子菜單拋出:BadTokenException:無法添加窗口

@Override 
protected void onCreateContextMenu(ContextMenu menu) { 
    super.onCreateContextMenu(menu); 
    SubMenu subMenu = menu.addSubMenu("Submenu"); 
    subMenu.add("SUB1"); 
    subMenu.add("SUB2"); 
} 

而且我展示使用菜單:

showContextMenu(); 

現在的一切都很好,「子菜單」項目顯示得非常好。當我點擊「子菜單」項,它產生此異常:

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) 

其實我不明白的例外非常好,我沒有看到的子菜單的顯示方式的任何實例,我認爲它會顯示在彈出對話框或類似的東西?

我需要做的是顯示一個菜單項與子項目,我不在一個活動!

回答

0

我還沒有找到任何解決方案,但我不得不使用PopupMenu類,它的工作原理是我想成爲的。 你可以使用這個很好的tutorial

相關問題