📜  如何避免alerdialoge android的外部点击 - Java(1)

📅  最后修改于: 2023-12-03 14:53:20.503000             🧑  作者: Mango

如何避免AlertDialog的外部点击

在开发Android应用程序时,我们通常使用 AlertDialog 来显示对话框。但是,有时候我们不希望用户点击对话框外部的区域来关闭对话框,因为这可能会导致一些意外的结果。那么该如何避免 AlertDialog 的外部点击呢?

方法一:使用 setCancelable(false)

在创建 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) 方法之后,就禁止了用户点击对话框外部来关闭对话框。

方法二:使用 setCanceledOnTouchOutside(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) 方法来禁止用户点击对话框外部来关闭对话框。这样可以提高应用程序的稳定性和用户体验。