如何关闭或取消自定义警报对话框
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()
,而是调用了 Builder
的 show()
方法,该方法称为 alertDialog
。该方法一步创建并显示对话框,但它创建了一个新实例,您没有为其命名,因此无法再关闭。
您要么需要调用 dialog.show()
而不是 alertDialog.show()
,要么使用 AlertDialog dialog = alertDialog.show()
并完全删除第二个 alertDialog.show()
。
我尝试在单击取消按钮时关闭 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()
,而是调用了 Builder
的 show()
方法,该方法称为 alertDialog
。该方法一步创建并显示对话框,但它创建了一个新实例,您没有为其命名,因此无法再关闭。
您要么需要调用 dialog.show()
而不是 alertDialog.show()
,要么使用 AlertDialog dialog = alertDialog.show()
并完全删除第二个 alertDialog.show()
。