How to prevent AlertDialog to close?

前端 未结 2 497
走了就别回头了
走了就别回头了 2020-12-19 16:46

I\'m using AlertDialog.Builder to build my dialog, it has an EditText which is necessary to be filled and I want to prevent closing the dialog while it is not. In the positi

2条回答
  •  天命终不由人
    2020-12-19 17:24

    You can change the behavior of the button immediately after calling show() of the dialog, like this.

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage("Test for preventing dialog close");
    builder.setPositiveButton("Test", 
            new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                    //Do nothing here because we override this button later to change the close behaviour. 
                    //However, we still need this because on older versions of Android unless we 
                    //pass a handler the button doesn't get instantiated
                }
            });
    AlertDialog dialog = builder.create();
    dialog.show();
    //Overriding the handler immediately after show is probably a better approach than OnShowListener as described below
    dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener()
          {            
              @Override
              public void onClick(View v)
              {
                  Boolean wantToCloseDialog = false;
                  //Do stuff, possibly set wantToCloseDialog to true then...
                  if(wantToCloseDialog)
                      dialog.dismiss();
                  //else dialog stays open. Make sure you have an obvious way to close the dialog especially if you set cancellable to false.
              }
          });
    

提交回复
热议问题