ProgressDialog creado a partir de onCreateDialog deja de animar en la segunda ejecución
Creo unProgressDialog
enonCreateDialog()
al igual que:
protected Dialog onCreateDialog(int id) {
if (id == DIALOG_PROGRESS_ID)
{
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage(getResources().getString(R.string.MyLabel));
dialog.setCancelable(false);
dialog.setIndeterminate(true);
return dialog;
}
}
Android, en su sabiduría (o falta grave) decide almacenar en caché cada diálogo creado a través de onCreateDialog (). Por eso, cualquier llamada posterior ashowDialog(DIALOG_PROGRESS_ID)
da como resultado que se use la misma instancia de ProgressDialog pero la animación ha dejado de funcionar.
He intentado restablecer indeterminado enonPrepareDialog()
, pero eso no hace nada. Tampoco hay un método obvio para llamar a la instancia de diálogo que restablecerá la animación.
protected void onPrepareDialog(int id, Dialog dialog)
{
//This doesn't do anything
if (id == DIALOG_PROGRESS_ID)
((ProgressDialog)dialog).setIndeterminate(true);
super.onPrepareDialog(id, dialog);
}
EDITAR: ¿Pero tal vez hay una manera de obtener el ProgressBar y comenzar a animarlo? Así que intenté lo siguiente después de hacer esta pregunta:
@Override
protected void onPrepareDialog(int id, Dialog dialog)
{
if (id == DIALOG_PROGRESS_ID)
{
ProgressBar p = (ProgressBar) dialog.findViewById(android.R.id.progress);
if (p.getAnimation() != null)
p.startAnimation(p.getAnimation());
}
super.onPrepareDialog(id, dialog);
}
Pero no funcionóya sea!
Entonces, ¿alguien sabe si hay una manera de reiniciar la animación en un ProgressDialog?Si no es así, ¿hay alguna manera de forzar que cada llamada a showDialog () llame a onCreateDialog ()? (Esta segunda pregunta fue respondida por @TuomasR, pero después de pensarlo, no creo que esta sea una muy buena solución para mi problema)