【发布时间】:2018-10-02 08:45:50
【问题描述】:
我收到了android.view.WindowManager$BadTokenException 异常,即使在对话框的创建和显示周围有(我理解为所有必要的)安全措施。
下面是创建和显示对话框的代码:
public class MyFragmentActivity extends FragmentActivity
public void handleErrorDialogOk() {
...
}
public void makeErrorDialog(){
if (!isFinishing()){
runOnUiThread(new Runnable()
{
@Override
public void run()
{
if (isFinishing())
return;
new AlertDialog.Builder(MyFragmentActivity.this)
.setTitle("Some title")
.setMessage("Some message")
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
handleErrorDialogOk();
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
});
}
}
}
我没有一直看到它,它似乎是随机的,我无法重现它(只能在已发布应用的 Play 商店的 ANRs & crashes 选项卡中看到它)。
我在这里做错了吗?
或者这可能是FragmentActivity 的错误?我似乎没有看到任何AlertDialogs 出现这种情况,这些AlertDialogs 是从派生自标准Activity 类的类的实例中呈现的......
【问题讨论】:
标签: android android-activity android-alertdialog android-fragmentactivity