android - BadTokenException即使我检查Activity是否为isFinishing()

标签 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但不再处于 Activity 状态的状态?

最佳答案

试试这个代码

    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();

   }

关于android - BadTokenException即使我检查Activity是否为isFinishing(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997091/

相关文章:

VB.NET 在表单之间传递数据。如何捕获Dialogresult.Ok的结果

android - 选择图库图像并转换为位图?

android - 我可以在谷歌市场上以多种语言发布应用程序吗?

Android访问服务里面的activity方法

android - 如何显示两个 Activity 之间的进度对话框?

c# - 创建 WPF 弹出窗口

c# - 如何制作一个小的帮助对话框?

php - 如何使用 HttpUrlConnection 通过 POST 传递参数

java - Html.fromHtml() 强制不删除未知标签

java - 在按下按钮和 finish() 后,resultCode 的值为 -1,但在按下后退按钮后,即使在相应函数中使用相同的代码,结果代码的值为 0