J'ai des données que je charge dans la base de données la première fois qu'un utilisateur entre Activity
et souhaite afficher un ProgressDialog
lorsque ces données sont chargées pour la première fois. Mon activité est un ExpandableListActivity
et je ne crée pas le SimpleExpandableListAdapter
ou l'appel setListAdapter
en passant mon adaptateur jusqu'à ce que je suis sûr que les données sont réellement là. Mon onCreate
ressemble à ceci:Android: la boîte de dialogue de progression ne s'affiche pas
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCategoryDbHelper = new CategoryDBHelper(this);
// Build default categories... if not there yet
CategoryDbBuilder builder = new CategoryDbBuilder(this);
if (!builder.hasCategoriesInTable()) {
showDialog(PROGRESS_DIALOG_ID);
builder.fillDbWithDefaultCategories();
removeDialog(PROGRESS_DIALOG_ID);
}
populate();
}
J'ai onCreateDialog
en tant que tels écrasés:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case PROGRESS_DIALOG_ID: {
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Loading categories for the first time. Please wait...");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
return dialog;
}
}
return null;
}
La méthode populate()
lit la base de données et met en place mon adaptateur de liste, puis appelle setListAdapter
.
Cela semble devoir être simple, mais c'est une énorme douleur. Toute aide serait appréciée. :-)
Ouais, c'est une façon de le faire, mais AsyncTask a eu un problème avec moi en essayant de faire dormir le thread pendant quelques secondes afin que la boîte de dialogue de progression reste allumée un peu et ne se contente pas de clignoter. J'ai fini par faire mon traitement dans un nouveau thread, et j'ai tué le dialogue de progression dans un gestionnaire. –