1

例子:

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();

出:
进!
在!
只需一键!
只需一键!
只需一键!
只需一键!

4

3 回答 3

4

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

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();
于 2012-12-07T18:08:45.320 回答
2

我不明白为什么有人可以在警报对话框上再次单击,因为按钮应该在执行某些操作后关闭对话框。为什么不使用 dialog.dismiss() 关闭对话框?

于 2012-12-07T18:06:47.420 回答
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();
于 2012-12-07T18:06:22.643 回答