2016-04-20 14 views
0

Ich habe eine ProgressDialog mit Abbrechen Button. Klicken Sie auf die Button Ich möchte eine AlertDialog zur Bestätigung anzeigen. Wenn jedoch die AlertDialog erscheint, ist die ProgressDialog geschlossen. Ich habe versucht, PD.hide() auf Klick, dann AD.dismiss() und PD.show(), für die Option zu verbieten, abzubrechen. Die Fortschrittsanzeige kann nicht abgerufen werden. Ich würde auch akzeptieren, die AlertDialog oben auf der ProgressDialog, wie wenn Sie doppelt tippen und zwei Dialogs erscheinen übereinander. Aber das passiert in diesem Fall nicht. Blendet es automatisch aus. Irgendwelche Gedanken?So zeigen Sie AlertDialog ohne Abschluss ProgressDialog

progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, 
       context.getResources().getString(R.string.button_cancel), 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(final DialogInterface dialog, int which) { 
         progressDialog.hide(); 
         DialogFactory.DialogParams dlgParams = new DialogFactory.DialogParams(); 
         dlgParams.setTitle(titleWarning) 
           .setIcon(context.getResources().getDrawable(android.R.drawable.ic_dialog_alert)) 
           .setContent(context.getResources().getString(R.string.msg_progform_cancel)) 
           .setYesButton(true) 
           .setNoButton(true); 

         final Dialog cancelDialog = DialogFactory.getInstance(context).createDialog(dlgParams); 
         cancelDialog.findViewById(R.id.yesButton).setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           cancelDialog.dismiss(); 
           progressDialog.cancel(); 
           progressDialog.dismiss(); 
           postTransferCancelEvent(true); 
          } 
         }); 
         cancelDialog.findViewById(R.id.noButton).setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           progressDialog.show(); 
           cancelDialog.dismiss(); 
          } 
         }); 
        } 
       }); 


     progressDialog.show(); 
+0

Postleitzahl Sie haben versucht ... – Mohit

+0

Bitte post relevanten Code, es ist schwer zu sagen, was das Problem ist, ohne zu sehen, was Sie tun. – Egor

+0

OK ......... Fertig. – speirs23

Antwort

1

Ich bin mir ziemlich sicher, dass das Problem ist, dass alle Schaltflächen, die setButton() ein Standardklickverhalten Satz verwenden, die benutzerdefinierten OnClickListener, nachdem Sie verarbeitet wird. Das Standard-Klickverhalten ist das Schließen des Dialogs.

Um dies zu umgehen, setzen Sie Ihren Klick Listener nach zeigt den Dialog.

progressDialog.show(); 

Button cancelButton = progressDialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
cancelButton.setText(context.getResources().getString(R.string.button_cancel)); 
cancel.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        progressDialog.hide(); 
        DialogFactory.DialogParams dlgParams = new DialogFactory.DialogParams(); 
        dlgParams.setTitle(titleWarning) 
          .setIcon(context.getResources().getDrawable(android.R.drawable.ic_dialog_alert)) 
          .setContent(context.getResources().getString(R.string.msg_progform_cancel)) 
          .setYesButton(true) 
          .setNoButton(true); 

        final Dialog cancelDialog = DialogFactory.getInstance(context).createDialog(dlgParams); 
        cancelDialog.findViewById(R.id.yesButton).setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          cancelDialog.dismiss(); 
          progressDialog.cancel(); 
          progressDialog.dismiss(); 
          postTransferCancelEvent(true); 
         } 
        }); 
        cancelDialog.findViewById(R.id.noButton).setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          progressDialog.show(); 
          cancelDialog.dismiss(); 
         } 
        }); 
       } 
      }); 

Beachten Sie, dass der Klick-Listener auf den Standard View.OnClickListener ändert.

+0

Der setButton() muss VOR dem show() sein -> http://stackoverflow.com/questions/7037433/how-to-set-cancel-button-in-progress-dialog – speirs23

+0

Ich benutze SetButton aber nicht * * getButton **. Schau dir den Unterschied zwischen meinem und deinem Code an – curob

+0

Akzeptierte Antwort. Sie müssen zuvor setButton() aufrufen, andernfalls wird der 'Button' nicht im' Dialog' angezeigt. – speirs23

Verwandte Themen