📅  最后修改于: 2023-12-03 14:53:20.503000             🧑  作者: Mango
在开发Android应用程序时,我们通常使用 AlertDialog 来显示对话框。但是,有时候我们不希望用户点击对话框外部的区域来关闭对话框,因为这可能会导致一些意外的结果。那么该如何避免 AlertDialog 的外部点击呢?
在创建 AlertDialog 对象的时候,我们可以调用 setCancelable(false) 方法来禁止用户点击对话框外部来关闭对话框。这样用户就只能通过点击对话框内部的按钮来关闭对话框。下面是一个例子:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示")
.setMessage("确认要删除吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 确认删除
}
})
.setNegativeButton("取消", null)
.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
上面的代码中,我们在调用 setCancelable(false) 方法之后,就禁止了用户点击对话框外部来关闭对话框。
除了使用 setCancelable(false) 方法,我们还可以调用 setCanceledOnTouchOutside(false) 方法来禁止用户点击对话框外部来关闭对话框。该方法与 setCancelable(false) 不同的是,它只会禁止用户在对话框外部单击来关闭对话框,但是用户仍然可以使用返回键来关闭对话框。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示")
.setMessage("确认要删除吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 确认删除
}
})
.setNegativeButton("取消", null);
AlertDialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(false);
dialog.show();
上面的代码中,我们在调用 setCanceledOnTouchOutside(false) 方法之后,就禁止了用户单击对话框外部来关闭对话框。
在Android开发中,我们使用 AlertDialog 来显示对话框。但是,由于用户可能会意外地点击对话框外部来关闭对话框,因此我们需要采取一些措施来避免这种情况的发生。我们可以使用 setCancelable(false) 方法或 setCanceledOnTouchOutside(false) 方法来禁止用户点击对话框外部来关闭对话框。这样可以提高应用程序的稳定性和用户体验。