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

pu3pd22g  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(344)

我正在创建一个自定义 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;
    }

要显示加载按钮,请单击不同的类,我只需调用:

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

我称之为:

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

omtl5h9j1#

你在做什么 new LoadingDialog(context).LoadDialog().dismiss(); // does not work 这将创建一个新的对话框引用并尝试取消它,而不是使用以前创建的相同对话框。
您需要将创建的对话与此对话存储在一起- new LoadingDialog(context).LoadDialog().show(); //works fine 然后使用 .dismiss 在存储的变量上

8ljdwjyq

8ljdwjyq2#

你当然在打电话 dismiss 与第一次调用创建的示例不同 show ,作为 LoadingDialog 方法在每次调用时创建一个新示例。
您需要存储由创建的示例 show 打电话给我 dismiss 在那种情况下。

kmpatx3s

kmpatx3s3#

没有关闭函数alertdialog.builder类。而是使用,

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

打电话给我

dialog.dismiss();
hgncfbus

hgncfbus4#

您应该将返回的对话框存储到一个变量中,否则您所做的就是创建一个新的 AlertDialog 示例和调用 show() 然后是另一个新示例并调用 dismiss() (因此一个从未出现过):

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

然后你可以打电话:

dialog.show();

dialog.dismiss();

相关问题