0
votes

La boîte de dialogue de progression ne se ferme pas

Dans le code ci-dessous montrant la boîte de dialogue de progression avec un délai de 5 secondes. Après 5 secondes, vous souhaitez fermer la boîte de dialogue, mais cela ne se passe pas dans la partie ci-dessous.

Est-ce que quelqu'un peut m'aider là où j'ai commis l'erreur?

new CountDownTimer(5000, 1000) 
{
    public void onTick(long millisUntilFinished) 
    {
       // You don't need anything here
       dialog= ProgressDialog.show(SchedulerActivity.this,"Delay", "Please wait...."+ millisUntilFinished/1000 + " Second(s)",true);
    }

    public void onFinish() 
    {
       dialog.dismiss();
    }

 }.start();


2 commentaires

êtes-vous sûr que onFinish () os s'est déclenché?


ProgressDialog est obsolète au niveau de l'API 26


3 Réponses :


0
votes

Au lieu d'affecter la valeur de la boîte de dialogue de progression à la variable de dialogue. Créez un objet Progress Dialog et définissez-lui le titre comme ci-dessous.

ProgressDialog pd = new ProgressDialog(yourActivity.this);
new CountDownTimer(5000, 1000) 
{
    public void onTick(long millisUntilFinished) 
    {
       // You don't need anything here
       pd.setMessage("what ever message you like");
        if (!pd.isShowing())
            pd.show();
    }

    public void onFinish() 
    {
       pd.dismiss();
    }

 }.start();

dans onFinish () veuillez appeler pd.dismiss ();

Veuillez définir le message dans la méthode onTick et afficher la boîte de dialogue de progression dans cette méthode si la boîte de dialogue de progression n'est pas déjà affichée.

ProgressDialog pd = new ProgressDialog(yourActivity.this);
pd.setMessage("what ever message you like");
pd.show();

p >


0 commentaires

0
votes

le tick appelle plusieurs fois c'est pourquoi votre boîte de dialogue ne se ferme pas

implémentez ceci

new CountDownTimer(5000, 1000) {

            public void onTick(long millisUntilFinished) {
                // You don't need anything here
                if(!dialog.isShowing())
                {
                    dialog= ProgressDialog.show(mContext,"Delay", "Please wait...."+ millisUntilFinished/1000 + " Second(s)",true);
                }
            }
            public void onFinish() {
                dialog.dismiss();
            }
        }.start();


0 commentaires

1
votes

Vous appelez

dialog = ProgressDialog.show (SchedulerActivity.this, "Delay", "Please wait ...." + millisUntilFinished / 1000 + "Second (s)", true);

dans la méthode side onTick () .

il créera une nouvelle instance de dialogue de progression à chaque tick. Cela peut causer des problèmes dans votre fonction et votre boîte de dialogue ne sera pas fermée dans ce cas.

Veuillez essayer avec le code ci-dessous

final ProgressDialog dialog = new ProgressDialog(DynamicView.this);
dialog.setTitle("Delay");
dialog.setMessage("Please wait...." + 5000 / 1000 + " Second(s)");
dialog.setIndeterminate(true);

new CountDownTimer(5000, 1000) {

    public void onTick(long millisUntilFinished) {
        // You don't need anything here
        dialog.setMessage("Please wait...." + millisUntilFinished / 1000 + " Second(s)");

        if (!dialog.isShowing())
            dialog.show();
    }

    public void onFinish() {
        if (dialog.isShowing())
            dialog.dismiss();
    }
}.start();

Ce code fonctionnera de la même manière que dont vous avez besoin.


0 commentaires