user1879118
user1879118

Reputation: 71

Android AlertDialog how to block second click on the ok button?

Example:

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

Out:
in!
in!
Only one click!
Only one click!
Only one click!
Only one click!

Upvotes: 1

Views: 2160

Answers (3)

petey
petey

Reputation: 17170

Get the button (positive) and set enabled to 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();

Upvotes: 4

sam
sam

Reputation: 3521

What i don't understand is why someone could click a second time on an alertdialog, because teh buttons are supposed to close the dialog after performing some action. Why do you not close the dialog with dialog.dismiss() ?

Upvotes: 2

PearsonArtPhoto
PearsonArtPhoto

Reputation: 39728

You need to disable it. I recommend a flag, which must be stored at the class level.

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

Upvotes: 0

Related Questions