第一次按下按钮关闭android中的警告对话框

时间:2014-12-20 05:47:06

标签: android android-alertdialog

我在做什么:

  • 我正在使用以下代码启动对话框
  • 点击我要关闭对话框

发生了什么事;

  • 对话框正在关闭,但我必须单击两次“确定”按钮(看起来警报弹出两次但是第二次关闭我按下确定)

我想做什么:

  • 我想第一次点击确定关闭对话框

   public void open(String custMsg){

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setMessage(custMsg);
    alert.setCancelable(false);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {

        dialog.cancel();
      }
    });
    alert.show();

}

3 个答案:

答案 0 :(得分:3)

您无需在onResume()中弹出对话框。每次窗口再次聚焦时都会调用onResume()。弹出对话框时,窗口失去焦点。取消对话框后,活动将再次聚焦并执行onResume()并再次显示对话框。

在其他地方调用对话框,它将起作用(例如onStart()

答案 1 :(得分:2)

简单的解决方案是。

您必须将打开弹出的代码移动到某些位置,因为每当您输入您的活动时,您的onResume()将被调用,并且每次弹出对话框都会打开,这是错误的。所以只需将代码移动到正确执行的地方。

注意: 致电dialog.dismiss()而不是dialog.cancel();

答案 2 :(得分:0)

更好地尝试

public AlertDialog open(String msg) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this,
                AlertDialog.THEME_DEVICE_DEFAULT_DARK);
        builder.setTitle(R.string.about_title)
                .setMessage(msg)
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                }).show();

        return builder.create();
    }

    }

但是你还需要创建对话框,我无法看到你创建它的位置