您的位置:首页 > 其它

WindowManager$BadTokenException

2012-05-22 11:00 190 查看
今天在google play上收集到一个程序异常的信息

android.view.WindowManager$BadTokenException: Unable to add window -- token
android.os.BinderProxy@406ab4c8 is not valid; is your activity running?

at android.view.ViewRoot.setView(ViewRoot.java:532)

at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:200)

at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114)

at android.view.Window$LocalWindowManager.addView(Window.java:424)

at android.app.Dialog.show(Dialog.java:241)

at android.app.AlertDialog$Builder.show(AlertDialog.java:802)

at com.nttdocomo.communicase.carriermail.activity.MailSettingAccountRecieveActivity$2$1.run(MailSettingAccountRecieveActivity.java:558)

at android.os.Handler.handleCallback(Handler.java:587)

at android.os.Handler.dispatchMessage(Handler.java:92)

at android.os.Looper.loop(Looper.java:130)

at android.app.ActivityThread.main(ActivityThread.java:3687)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:507)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)

at dalvik.system.NativeStart.main(Native Method)

在线程里弹出dialog的时候

new AlertDialog.Builder(
MailSettingAccountRecieveActivity.this)
.setTitle(
getString(R.string.check_failed_title))
.setMessage(errMessage)
.setPositiveButton(getString(R.string.ok), null)
.show();

}
});

stackflow 上的解释是

The problem is that the dialog need to have the "base" context of your activity, not necessarily the one you're launching it from.

然后我在弹dialog之前加上了这段代码

Activity activity = MailSettingAccountRecieveActivity.this;
while (activity.getParent() != null) {
activity = activity.getParent();
}
new AlertDialog.Builder(activity)
.setTitle(
getString(R.string.check_failed_title))
.setMessage(errMessage)
.setPositiveButton(
getString(R.string.ok),
null).show();

}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐