我有一种非常奇怪的行为,我找不到它的原因。
我在onCreate()上做的最后一件事是调用某个方法。
在那个方法中我使用
progressDialog = ProgressDialog.show(this,null,“注册Moish'd!服务器”,true,false); 。
在第一次运行时,我得到BadTokenException:无法在 progressDialog 行上添加窗口。
第二次运行它通过它。
我在论坛中读到,如果活动处于“完成”过程的中间,那么它可能会导致这样的例外
经过长时间的调试测试,我试着要求isFinishing()。奇怪的事情 - 在调用方法之前, isFinishing()返回false 。在方法的第一行我再次问,现在 isFinishing()返回true 。
怎么会这样 ?!?在进入方法之前的最后一行,它不是“完成”,并且在方法的第一行中它突然“完成”,当NOTHING发生在两者之间时(肯定不会调用finish())。有谁?!?
答案 0 :(得分:0)
我认为您不能在ProgressDialog
中弹出onCreate
因为Activity
的主要窗口尚未绘制。 尝试将 ProgressDialog.show()
调用移至onResume
方法。
<强>更新强>
好的,也许你可以试试这个:
private static final int DIALOG_INIT = 0;
...
public void onCreate(Bundle savedInstanceState) {
...
showDialog(DIALOG_INIT);
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch (id) {
case DIALOG_INIT:
dialog = new ProgressDialog(this);
((ProgressDialog) dialog).setMessage("Registering with Moish'd! server");
//other dialog setup
break;
}
return dialog;
}