Android AlertDialog如何阻止第二次点击确定按钮?

时间:2012-12-07 18:00:53

标签: java android alertdialog

示例:

System.out.println("in!");
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setMessage("test!!!");
    dialog.setPositiveButton(R.string.dialog_ok, 
        new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                System.out.println("Only one click!");
            }
    });
    dialog.show();

输出:
在!
在!
只需点击一下!
只需点击一下!
只需点击一下!
只需点击一下!

3 个答案:

答案 0 :(得分:4)

获取按钮(正面)并将启用设置为false。

System.out.println("in!");
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setMessage("test!!!");
dialog.setPositiveButton(R.string.dialog_ok, 
    new OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // disable on 1st click;
            final AlertDialog alertDialog = (AlertDialog)dialog;
            alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
            System.out.println("Only one click!");
        }
});
dialog.show();

答案 1 :(得分:2)

我不明白为什么有人可以第二次点击alertdialog,因为在执行某些操作后,应该关闭对话框。 为什么不关闭对话框     dialog.dismiss()  ?

答案 2 :(得分:0)

您需要禁用它。我推荐一个标志,必须存放在班级。

Boolean hasBeenClicked=false;


System.out.println("in!");
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setMessage("test!!!");
    dialog.setPositiveButton(R.string.dialog_ok, 
        new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                if (!hasBeenClicked)
                {
                  hasBeenClicked=true;
                  System.out.println("Only one click!");
                }
            }
    });
    dialog.show();