我的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
但又不再有效的状态?
答案 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();
}