java - BadTokenException: Unable to add window -
i have issue receive badtokenexception
when screen times out, , user returns application. have button opens contextmenu
when clicked.
it works fine normally, when user lets screen time out, , returns application, badtokenexception
thrown.
07-01 14:46:42.763: warn/windowmanager(1105): attempted add window token sub-window: android.os.binderproxy@44af17c8. aborting. 07-01 14:46:42.771: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.view.showcontextmenu(view.java:2444) 07-01 14:46:42.771: warn/system.err(1725): @ com.??.??.ui.cards.viewactivity$3.onclick(viewactivity.java:353) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.view.performclick(view.java:2408) 07-01 14:46:42.771: warn/system.err(1725): @ android.view.view$performclick.run(view.java:8816) 07-01 14:46:42.771: warn/system.err(1725): @ android.os.handler.handlecallback(handler.java:587) 07-01 14:46:42.771: warn/system.err(1725): @ android.os.handler.dispatchmessage(handler.java:92) 07-01 14:46:42.771: warn/system.err(1725): @ android.os.looper.loop(looper.java:123) 07-01 14:46:42.771: warn/system.err(1725): @ android.app.activitythread.main(activitythread.java:4627) 07-01 14:46:42.771: warn/system.err(1725): @ java.lang.reflect.method.invokenative(native method) 07-01 14:46:42.771: warn/system.err(1725): @ java.lang.reflect.method.invoke(method.java:521) 07-01 14:46:42.771: warn/system.err(1725): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:858) 07-01 14:46:42.771: warn/system.err(1725): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 07-01 14:46:42.771: warn/system.err(1725): @ dalvik.system.nativestart.main(native method) 07-01 14:46:43.005: warn/system.err(1725): android.view.windowmanager$badtokenexception: unable add window -- token android.view.viewroot$w@44757528 not valid; activity running? 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewroot.setview(viewroot.java:505) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:177) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:91) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.window$localwindowmanager.addview(window.java:424) 07-01 14:46:43.005: warn/system.err(1725): @ android.app.dialog.show(dialog.java:241) 07-01 14:46:43.005: warn/system.err(1725): @ com.android.internal.view.menu.menudialoghelper.show(menudialoghelper.java:86) 07-01 14:46:43.005: warn/system.err(1725): @ com.android.internal.view.menu.contextmenubuilder.show(contextmenubuilder.java:88) 07-01 14:46:43.005: warn/system.err(1725): @ com.android.internal.policy.impl.phonewindow$decorview.showcontextmenuforchild(phonewindow.java:1860) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459) 07-01 14:46:43.005: warn/system.err(1725): @ android.view.viewgroup.showcontextmenuforchild(viewgroup.java:459)
if catch exception, button never opens contextmenu in case, other controls on page continue work.
if minimize application home screen, , return, application crashes following trace:
07-01 15:10:50.439: error/androidruntime(1931): fatal exception: main 07-01 15:10:50.439: error/androidruntime(1931): java.lang.nullpointerexception 07-01 15:10:50.439: error/androidruntime(1931): @ android.view.windowmanagerimpl.removeviewlocked(windowmanagerimpl.java:239) 07-01 15:10:50.439: error/androidruntime(1931): @ android.view.windowmanagerimpl.closeall(windowmanagerimpl.java:293) 07-01 15:10:50.439: error/androidruntime(1931): @ android.app.activitythread.handledestroyactivity(activitythread.java:3687) 07-01 15:10:50.439: error/androidruntime(1931): @ android.app.activitythread.access$2900(activitythread.java:125) 07-01 15:10:50.439: error/androidruntime(1931): @ android.app.activitythread$h.handlemessage(activitythread.java:2066) 07-01 15:10:50.439: error/androidruntime(1931): @ android.os.handler.dispatchmessage(handler.java:99) 07-01 15:10:50.439: error/androidruntime(1931): @ android.os.looper.loop(looper.java:123) 07-01 15:10:50.439: error/androidruntime(1931): @ android.app.activitythread.main(activitythread.java:4627) 07-01 15:10:50.439: error/androidruntime(1931): @ java.lang.reflect.method.invokenative(native method) 07-01 15:10:50.439: error/androidruntime(1931): @ java.lang.reflect.method.invoke(method.java:521) 07-01 15:10:50.439: error/androidruntime(1931): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:858) 07-01 15:10:50.439: error/androidruntime(1931): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 07-01 15:10:50.439: error/androidruntime(1931): @ dalvik.system.nativestart.main(native method)
here's how i'm adding contextmenu:
b.setonclicklistener( new onclicklistener() { @override public void onclick( view view ) { if (contextmenuopen) return;// popup options contextmenuopen = view.showcontextmenu(); }
i not call registerforcontextmenu button, rather main view itself. incorrect?
you holding on reference context (either explicitly, or creating dialog or toast or other dependent item) has been destroyed (typically because using oncreatedialog
or passed activity other process didn't destroyed when activity destroyed).
Comments
Post a Comment