Home » Android » android – How to prevent dialog to open twice

android – How to prevent dialog to open twice

Posted by: admin June 15, 2020 Leave a comment

Questions:

I had button in my app, on doubleClick of my button i open a dialog.Sometimes what happen when i doubleClick the button in a fast way then the dialog open twice, as a result of which the user has to cancel the dialog twice.

So can anyone suggest me how can i prevent this dialog to open twice on doubleClick of my button.

How to&Answers:

May be this will help you:

Take a count variable i.e., count=0;.
In button click validate condition such that if(count==0) show dialog and make count to 1. (with this dialog will not open second time) while dismissing dialog make count to 0 again.

I think this will work

Hope it helps.

Answer:

make a field for your dialog, like

private Dialog m_dialog = null;

and in your onClick listener check it’s status:

if ((m_dialog == null) || !m_dialog.isShowing()){
    m_dialog = new Dialog(...); // initiate it the way you need
    m_dialog.show();
}

edit
btw, if you don’t need to initialize dialog every time you may separate if() clause like this:

if (m_dialog == null){
    m_dialog = new Dialog(...); // initiate it the way you need
    m_dialog.show();
} 
else if (!m_dialog.isShowing()){
    m_dialog.show();
}

Answer:

When the Button is pressed, disable it using Button.setEnabled(false). When the dialog finishes, re-enable the Button using a DialogInterface.OnDismissListener. This way you don’t have to hold a global reference to your dialog.

Answer:

I was facing the same problem for last 2 days and after a lots of hit and trial I found a small problem in my code that I was not dismissing the dialog which I opened in onPostExecute() of my AsyncTask to do some extra work after AsyncTask Work.

When I called myCustomDialog.dismiss() everything worked fine.

Answer:

boolean isBusy = false;

View.OnClickListener ShowDialog_Click(){
    return new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(isBusy){
                return;
            }
            isBusy = true;
            //show dialog
        }
    };
}

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
      @Override
      public void onDismiss(DialogInterface dialogInterface) {
          dialog.dismiss();
          isBusy = false;
      }
});