android illegal exception when dialog is showing -


i have crash log:

java.lang.illegalargumentexception: view=com.android.internal.policy.impl.phonewindow$decorview{21f9ba68 v.e..... r.....id 0,0-1136,402} not attached window manager @ android.view.windowmanagerglobal.findviewlocked(windowmanagerglobal.java:402) @ android.view.windowmanagerglobal.removeview(windowmanagerglobal.java:328) @ android.view.windowmanagerimpl.removeviewimmediate(windowmanagerimpl.java:84) @ android.app.dialog.dismissdialog(dialog.java:433) @ android.app.dialog.dismiss(dialog.java:416) @ ys.a(confirmationdialog.java:82) @ ys.a(confirmationdialog.java:76) @ **com.smarttech.kapp.snapshotactivity.onoptionsitemselected(snapshotactivity.java:147)** @ android.app.activity.onmenuitemselected(activity.java:3036) @ android.support.v4.app.fragmentactivity.onmenuitemselected(fragmentactivity.java:373) @ com.android.internal.policy.impl.phonewindow.onmenuitemselected(phonewindow.java:1222) @ com.android.internal.view.menu.menubuilder.dispatchmenuitemselected(menubuilder.java:761) @ com.android.internal.view.menu.menuitemimpl.invoke(menuitemimpl.java:155) @ com.android.internal.view.menu.menubuilder.performitemaction(menubuilder.java:904) @ com.android.internal.view.menu.menubuilder.performitemaction(menubuilder.java:894) @ android.widget.actionmenuview.invokeitem(actionmenuview.java:611) @ com.android.internal.view.menu.actionmenuitemview.onclick(actionmenuitemview.java:197) @ android.view.view.performclick(view.java:5217) @ android.view.view.onkeyup(view.java:9663) @ android.widget.textview.onkeyup(textview.java:7047) @ android.view.keyevent.dispatch(keyevent.java:3171) @ android.view.view.dispatchkeyevent(view.java:8876) @ android.view.viewgroup.dispatchkeyevent(viewgroup.java:1695) @ android.view.viewgroup.dispatchkeyevent(viewgroup.java:1695) @ android.view.viewgroup.dispatchkeyevent(viewgroup.java:1695) @ android.view.viewgroup.dispatchkeyevent(viewgroup.java:1695) @ android.view.viewgroup.dispatchkeyevent(viewgroup.java:1695) @ com.android.internal.policy.impl.phonewindow$decorview.superdispatchkeyevent(phonewindow.java:2671) @ com.android.internal.policy.impl.phonewindow.superdispatchkeyevent(phonewindow.java:1787) @ android.app.activity.dispatchkeyevent(activity.java:2837) @ com.android.internal.policy.impl.phonewindow$decorview.dispatchkeyevent(phonewindow.java:2549) @ android.view.viewrootimpl$viewpostimeinputstage.processkeyevent(viewrootimpl.java:4661) @ android.view.viewrootimpl$viewpostimeinputstage.onprocess(viewrootimpl.java:4616) @ android.view.viewrootimpl$inputstage.deliver(viewrootimpl.java:4174) @ android.view.viewrootimpl$inputstage.ondelivertonext(viewrootimpl.java:4227) @ android.view.viewrootimpl$inputstage.forward(viewrootimpl.java:4193) @ android.view.viewrootimpl$asyncinputstage.forward(viewrootimpl.java:4303) @ android.view.viewrootimpl$inputstage.apply(viewrootimpl.java:4201) @ android.view.viewrootimpl$asyncinputstage.apply(viewrootimpl.java:4360) @ android.view.viewrootimpl$inputstage.deliver(viewrootimpl.java:4174) @ android.view.viewrootimpl$inputstage.ondelivertonext(viewrootimpl.java:4227) @ android.view.viewrootimpl$inputstage.forward(viewrootimpl.java:4193) @ android.view.viewrootimpl$inputstage.apply(viewrootimpl.java:4201) @ android.view.viewrootimpl$inputstage.deliver(viewrootimpl.java:4174) @ android.view.viewrootimpl$inputstage.ondelivertonext(viewrootimpl.java:4227) @ android.view.viewrootimpl$inputstage.forward(viewrootimpl.java:4193) @ android.view.viewrootimpl$asyncinputstage.forward(viewrootimpl.java:4336) @ android.view.viewrootimpl$imeinputstage.onfinishedinputevent(viewrootimpl.java:4500) @ android.view.inputmethod.inputmethodmanager$pendingevent.run(inputmethodmanager.java:2607) @ android.view.inputmethod.inputmethodmanager.invokefinishedinputeventcallback(inputmethodmanager.java:2201) @ android.view.inputmethod.inputmethodmanager.finishedinputevent(inputmethodmanager.java:2192) @ android.view.inputmethod.inputmethodmanager$imeinputeventsender.oninputeventfinished(inputmethodmanager.java:2584) @ android.view.inputeventsender.dispatchinputeventfinished(inputeventsender.java:141) @ android.os.messagequeue.nativepollonce(native method) @ android.os.messagequeue.next(messagequeue.java:143) @ android.os.looper.loop(looper.java:130) @ android.app.activitythread.main(activitythread.java:6117) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1399) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1194) 

this soruce code of showing dialog in snapshot activity:

@override public boolean onoptionsitemselected(menuitem item) {     switch (item.getitemid()) {         case android.r.id.home:             finish();             return true;         case r.id.snapshot_delete:             log.d(tag, "delete snapshot");             **delete();**             return true;         case r.id.snapshot_share:             export();             return true;     }      return super.onoptionsitemselected(item); }  private void delete() {     log.d(tag, "delete snapshot");     final int index = pager.getcurrentitem();     confirmationdialog.prompt(this, r.string.delete_snapshot, r.string.delete_snapshot_confirmation, r.string.delete, android.r.string.cancel, new runnable() {         @override         public void run() {             snapshots.get(index).delete();             loadsnapshots();         }     }); } 

this crash hard reproduce , information have. reason of exception? , how can fixed? think reason thread in dialog, i'm not sure

public static void prompt(final context context, int titleresourceid, int questionresourceid, int positivebutton, int negativebutton, final runnable confirmedrunnable, final runnable cancelledrunnable) {     closedialog();     dialoginterface.onclicklistener confirmed = new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog, int whichbutton) {             currentdialog = null;             confirmedrunnable.run();         }     };     dialoginterface.onclicklistener cancelled = new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog, int whichbutton) {             currentdialog = null;             if (cancelledrunnable != null) {                 cancelledrunnable.run();             }         };     };     currentdialog = new alertdialog.builder(context).settitle(titleresourceid).setmessage(questionresourceid).seticon(android.r.drawable.ic_dialog_alert).setpositivebutton(positivebutton, confirmed)             .setnegativebutton(negativebutton, cancelled).show();     currentdialog.setcancelable(cancelled == null);     currentdialog.setcanceledontouchoutside(cancelled == null); } 

this promt implementation

the top level of stacktrace telling wrong:

java.lang.illegalargumentexception: view=com.android.internal.policy.impl.phonewindow$decorview{21f9ba68 v.e..... r.....id 0,0-1136,402} not attached window manager @ android.view.windowmanagerglobal.findviewlocked(windowmanagerglobal.java:402) @ android.view.windowmanagerglobal.removeview(windowmanagerglobal.java:328) @ android.view.windowmanagerimpl.removeviewimmediate(windowmanagerimpl.java:84) @ android.app.dialog.dismissdialog(dialog.java:433) @ android.app.dialog.dismiss(dialog.java:416) 

you calling dismiss on dialog not being shown anymore. in: activity/fragment possibly destroyed when call dismiss (-> "not attached window manager").

[edit] 1 way fix check activity.isfinishing() or fragment.isadded()


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -