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();
3 Réponses :
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 >
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();
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.
êtes-vous sûr que onFinish () os s'est déclenché?
ProgressDialog est obsolète au niveau de l'API 26