警报对话框:活动已泄露窗口DecorView @ a61b0ed []最初在此处添加

时间:2018-03-22 07:00:01

标签: android alertdialog

在警报对话后尝试导航到下一个活动时,我正在

此错误:

  

活动已泄露最初的窗口DecorView @ a61b0ed []   在这里添加

这是片段:

if (alert1 != null && alert1.isShowing()) {
    alert1.dismiss();
}

builder.setCancelable(true);
final AlertDialog alert1 = builder.create();
alert1.show();

onPause();

final Timer t = new Timer();
t.schedule(new TimerTask() {
    @Override
    public void run() {
        alert1.dismiss();
        t.cancel();
    }
}, 3000);

if (updatedQnty.equals("order full")) {

    Intent intent = new Intent();
    setResult(Activity.RESULT_OK, intent);
    finish();
   // callForDestroy(alert1);

}else{
    mScannerView.resumeCameraPreview(this);
}

3 个答案:

答案 0 :(得分:0)

错误表示您在活动结束后尝试显示或关闭对话框。你应该在父活动被销毁之前解雇它。

检查activity lifecycle并确保在您致电alert1.show();alert1.dismiss();

时,您的活动仍然存在

答案 1 :(得分:0)

在导航到另一个活动之前,您必须关闭显示的AlertDialog。您可以在Activity:onStop()上添加检查和解除功能,以确保您将其解雇。

答案 2 :(得分:0)

您的问题可能是因为您的计时器仍在运行但活动已经完成。因此,您需要确保在活动结束前关闭对话框。

您可以通过在活动结束时取消计时器来解决问题。像这样:

if (updatedQnty.equals("order full")) {

    Intent intent = new Intent();
    setResult(Activity.RESULT_OK, intent);

    // cancel the timer so the dialog not shown.
    t.cancel();
    // now you can finish the activity.
    finish();
}