协慌网

登录 贡献 社区

如何在 Android 上显示警报对话框?

我想显示一个对话框 / 弹出窗口,其中显示一条消息,显示 “您确定要删除此条目吗?” 用一个按钮说 “删除”。当Delete被触摸时,应该删除该条目,否则什么都没有。

我为这些按钮编写了一个单击侦听器,但是如何调用对话框或弹出窗口及其功能?

答案

您可以为此使用AlertDialog并使用其Builder类构造一个。下面的示例使用仅接受Context的默认构造函数,因为对话框将从您传入的 Context 继承正确的主题,但是还有一个构造函数,允许您指定特定的主题资源作为第二个参数,如果您希望这样做。

new AlertDialog.Builder(context)
    .setTitle("Delete entry")
    .setMessage("Are you sure you want to delete this entry?")

    // Specifying a listener allows you to take an action before dismissing the dialog.
    // The dialog is automatically dismissed when a dialog button is clicked.
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) { 
            // Continue with delete operation
        }
     })

    // A null listener allows the button to dismiss the dialog and take no further action.
    .setNegativeButton(android.R.string.no, null)
    .setIcon(android.R.drawable.ic_dialog_alert)
    .show();

试试这段代码:

AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
builder1.setMessage("Write your message here.");
builder1.setCancelable(true);

builder1.setPositiveButton(
    "Yes",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });

builder1.setNegativeButton(
    "No",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });

AlertDialog alert11 = builder1.create();
alert11.show();

David Hedlund 发布的代码给了我错误:

无法添加窗口 - 令牌 null 无效

如果您收到相同的错误,请使用以下代码。有用!!

runOnUiThread(new Runnable() {
    @Override
    public void run() {

        if (!isFinishing()){
            new AlertDialog.Builder(YourActivity.this)
              .setTitle("Your Alert")
              .setMessage("Your Message")
              .setCancelable(false)
              .setPositiveButton("ok", new OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      // Whatever...
                  }
              }).show();
        }
    }
});