ProgressDialog.rejeter() ne fonctionne pas
Veuillez consulter l'exemple de code suivant. Toast messages, mais la progressdialog n'est jamais caché. Pourquoi?
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
public class LoadExamActivity extends Activity implements Runnable{
ProgressDialog pd;
Handler Finished = new Handler(){
@Override
public void handleMessage(Message msg){
Toast.makeText(getApplicationContext(), "DONE!", Toast.LENGTH_SHORT).show();
pd.dismiss();
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exam);
Toast.makeText(this, "START!", Toast.LENGTH_SHORT).show();
pd = new ProgressDialog(this);
pd.show(this, "Waiting...", "Please wait five seconds...");
Thread th = new Thread(this);
th.start();
}
public void run() {
//To change body of implemented methods use File | Settings | File Templates.
for (int i = 0; i < 5; i++)
{
try
{
Thread.sleep(1000);
}catch(Exception e){}
}
Finished.sendEmptyMessage(0);
}
}
Après cinq secondes, le "FAIT" le message est affiché mais la progressdialog n'est pas rejeté, et même si j'ai mis pd.rejeter() juste en dessous de thr pd.show() j'ai l'habitude de rejeter la progressdialog soit et je ne sais pas pourquoi ce qui se passe et ça me rend fou!
OriginalL'auteur Davidoff | 2012-02-25
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas à l'aide de la boîte de dialogue de progression de la droite. Vous remarquerez que les IDE montre un joli petit signe d'avertissement à côté de votre
pd.show(...)
ligne.Ce que vous faites est
Créer un (invisible, peu importe), boîte de dialogue de progression à l'aide de
new ProgressDialog()
Créer un autre boîte de dialogue de progression avec le texte de votre choix à l'aide de
pd.Show()
, sans stocker une référence à elle.Rejeter la première boîte de dialogue. La boîte de dialogue à partir de (2) reste.
Si vous remplacez votre code avec:
il devrait fonctionner très bien.
Oui, cela fonctionne. show() renvoie une instance de ProgressDialog mais en utilisant le nouveau mot-clé, nous obtenons le même exemple, je l'espère. À l'aide de la façon décrite ci-dessus, le rejeter code travaillé, d'autre part, en utilisant le nouveau mot-clé, le code ne fonctionnait pas.
Je vous remercie pour la grande explication.
OriginalL'auteur Paul-Jan
Problème ici, c'est le contexte qui vous avez utilisé pour créer le ProgressDialog. Utiliser l'activité principale de contexte pour créer le ProgressDialog et l'utilisation afficher() et dissmiss() la méthode où vous en avez besoin.
OriginalL'auteur Indika Ruwan Senavirathne