自定义警报对话框不会关闭

Custom Alert Dialog does not dismiss

我正在创建自定义 AlertDialog 以显示按钮单击事件侦听器的加载。警报对话框 show() 功能正常,但 dismiss() 功能不工作

 public AlertDialog LoadDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);

        LayoutInflater inflater = activity.getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.dialog_show_loading, null));
        builder.setCancelable(true);

        dialog = builder.create();

        if (dialog != null)
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

        return dialog;
    }

要在不同的 class 按钮上显示加载,我只是调用:

new LoadingDialog(context).LoadDialog().show(); //works fine

并关闭我调用的加载:

new LoadingDialog(context).LoadDialog().dismiss(); // does not work

您应该将返回的 dialog 存储到一个变量中,否则您所做的只是创建一个新的 AlertDialog 实例并调用 show() 然后再调用一个新的实例并调用 dismiss()(因此永远不会消失):

AlertDialog dialog = new LoadingDialog(context).LoadDialog();

那么您可以拨打:

dialog.show();

或者

dialog.dismiss();

没有关闭功能AlertDialog.BuilderClass。 而是使用,

AlertDialog dialog= new AlertDialog.Builder(this).create();

并致电

dialog.dismiss();

当然,您在与第一次调用 show 创建的实例不同的实例上调用 dismiss,因为 LoadingDialog 方法在每次调用时都会创建一个新实例.

您需要存储 show 创建的实例并在该实例上调用 dismiss

您正在执行 new LoadingDialog(context).LoadDialog().dismiss(); // does not work 这将创建一个新的对话框引用并尝试关闭它而不是使用您之前创建的相同对话框。

你需要用这个存储创建的对话-

new LoadingDialog(context).LoadDialog().show(); //works fine

然后在存储的变量上使用 .dismiss