如何关闭或取消自定义警报对话框

How to close or cancel custom alert dialog

我尝试在单击取消按钮时关闭 AlertDialog,但它不起作用。我尝试使用 .dismiss().cancel(),但其中 none 有效。

这是我的代码片段:

  final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
                        LayoutInflater layoutInflater = LayoutInflater.from(context);
                        final View viewer = layoutInflater.inflate(R.layout.input_dialog, null);

                        alertDialog.setTitle("Edit Albums Name");
                        alertDialog.setView(viewer);

                        Button send =(Button) viewer.findViewById(R.id.saveAlBtn);
                        Button cancel =(Button) viewer.findViewById(R.id.dismissBtn);


      final AlertDialog dialog = alertDialog.create();

                            cancel.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    dialog.cancel(); // dialog.dismiss();
                                }
                            });
    alertDialog.show();

这个问题很简单,但也很棘手: 您从构建器创建一个 AlertDialog 并将其命名为 dialog。单击取消按钮时,您将关闭 dialog。但是您实际上从未显示过对话框,即称为 dialog.show(),而是调用了 Buildershow() 方法,该方法称为 alertDialog。该方法一步创建并显示对话框,但它创建了一个新实例,您没有为其命名,因此无法再关闭。

您要么需要调用 dialog.show() 而不是 alertDialog.show(),要么使用 AlertDialog dialog = alertDialog.show() 并完全删除第二个 alertDialog.show()