65 votes

Comment définir un bouton d'annulation dans la boîte de dialogue de progression ?

Je veux mettre en place un bouton d'annulation dans mon ProgressDialog . Voici mon code :

myDialog = new ProgressDialog(BaseScreen.this);
myDialog.setMessage("Loading...");
myDialog.setCancelable(false);
myDialog.show();

Je souhaite définir un bouton avec un onClickListener sur ce ProgressDialog . J'ai essayé avec ce code :

myDialog.setButton("Cancel", new OnClickListener() {        
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub          
        myDialog.dismiss();
    }
});

Mais cela ne fonctionne pas. J'ai essayé d'autres auditeurs similaires, mais toujours sans succès. Comment puis-je résoudre ce problème ?

154voto

Felix Points 33944

En setButton que vous utilisez est obsolète (bien qu'elle devrait toujours fonctionner). Vous pouvez également ajouter le bouton avant en affichant le dialogue. Essayez :

myDialog = new ProgressDialog(BaseScreen.this);
myDialog.setMessage("Loading...");
myDialog.setCancelable(false);
myDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        myDialog.dismiss();//dismiss dialog
    }
});
myDialog.show();

6 votes

POUR INFORMATION, dialog.dismiss() n'est pas nécessaire dans le onClick car il fermera automatiquement la boîte de dialogue. En fait, cette méthode ne permet pas d'empêcher la fermeture de la boîte de dialogue.

17voto

ernazm Points 5289

N'oubliez pas d'appeler myDialog.setButton avant d'appeler myDialog.show();
Vous pouvez également utiliser myDialog.setButton("Cancel", (DialogInterface.OnClickListener) null); si vous ne souhaitez fermer la boîte de dialogue qu'en cliquant sur un bouton.

3voto

Raghu Points 2129

Vérifier ceci

private void createCancelProgressDialog(String title, String message, String buttonText)
{
    cancelDialog = new ProgressDialog(this);
    cancelDialog.setTitle(title);
    cancelDialog.setMessage(message);
    cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int which) 
        {
            // Use either finish() or return() to either close the activity or just the dialog
            return;
        }
    });
    cancelDialog.show();
}

il suffit alors d'utiliser une simple méthode d'appel à partir d'un autre endroit de votre activité

createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel");

0 votes

Il est annulé sur la version 4.3 ou supérieure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X