Как установить NegativeButton из AlertDialog.Builder не кликабельным - PullRequest
0 голосов
/ 28 марта 2012

Мой код, как показано ниже:

AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Dialog");

dialog.setPositiveButton("Check", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface arg0, int arg1) {
    if(condition) {
      //set NegativeButton unclickable
    } else {
      //set NegativeButton clickable
    }
  } // end of onClick
});

dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface arg0, int arg1) {
    //do something
  }
});

Как установить NegativeButton нажатием и не щелкать мышью?

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Используйте код ниже, чтобы проверить состояние в onclick:

try {
 Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");   
 field.setAccessible(true);   
 field.set(dialog, false);
}
catch(Exception e) { 
 e.printStackTrace();  
}

Это может заставить его ничего не делать, но он все еще активен.

1 голос
/ 28 марта 2012

Попробуйте это:

... ...

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

if(condition) {
  //set NegativeButton unclickable
  alertDialog.getButton(Dialog.BUTTON_NEGATIVE).setClickable(false);
} else {
  //set NegativeButton clickable
  alertDialog.getButton(Dialog.BUTTON_NEGATIVE).setClickable(true);
}
...