BadTokenException,即使我检查Activity是否isFinishing()

时间:2016-08-17 12:47:35

标签: android android-activity dialog crash

我的Activity中有以下代码,以便在发生错误时显示警告Dialog

private void showConfigError() {
        if (!isFinishing()) {
            new AlertDialog.Builder(this)
                    .setMessage(R.string.start_failed)
                    .setCancelable(false)
                    .setPositiveButton(*/.../*)
                    .setNegativeButton(*/.../*)
                    .create()
                    .show();
        }
    }

如您所见,在显示Activity之前,我会检查Dialog是否仍在运行。但是我的崩溃日志显示,有时在程序的这一部分会发生BadTokenException。现在我问自己这是怎么发生的?!是否存在Activity可以返回isFinishing() == false但又不再有效的状态?

1 个答案:

答案 0 :(得分:0)

试试这段代码

    private void showConfigError() {
    if (isFinishing()) return; 

    new AlertDialog.Builder(this)
                .setMessage(R.string.start_failed)
                .setCancelable(true)        // let system kills it.
                .setPositiveButton(*/.../*)
                .setNegativeButton(*/.../*)
                .create()
                .show();

   }