不调用finish()导致BadTokenException时进入“完成”状态

时间:2011-01-06 22:14:40

标签: android

我有一种非常奇怪的行为,我找不到它的原因。 我在onCreate()上做的最后一件事是调用某个方法。 在那个方法中我使用
progressDialog = ProgressDialog.show(this,null,“注册Moish'd!服务器”,true,false);
在第一次运行时,我得到BadTokenException:无法在 progressDialog 行上添加窗口。 第二次运行它通过它。
我在论坛中读到,如果活动处于“完成”过程的中间,那么它可能会导致这样的例外 经过长时间的调试测试,我试着要求isFinishing()。奇怪的事情 - 在调用方法之前, isFinishing()返回false 。在方法的第一行我再次问,现在 isFinishing()返回true 。 怎么会这样 ?!?在进入方法之前的最后一行,它不是“完成”,并且在方法的第一行中它突然“完成”,当NOTHING发生在两者之间时(肯定不会调用finish())。有谁?!?

1 个答案:

答案 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;
}