ProgressDialog, das mit onCreateDialog erstellt wurde, wird beim zweiten Durchlauf nicht mehr animiert
Ich erstelle einProgressDialog
imonCreateDialog()
wie so:
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 entschließt sich nach seiner Weisheit (oder nach schwerwiegenden Mängeln), jeden mit onCreateDialog () erstellten Dialog zwischenzuspeichern. Aus diesem Grund wird jeder nachfolgende Aufruf vonshowDialog(DIALOG_PROGRESS_ID)
führt dazu, dass dieselbe ProgressDialog-Instanz verwendet wird, die Animation jedoch nicht mehr funktioniert.
Ich habe versucht, unbestimmt in @ zurückzusetzonPrepareDialog()
, aber das macht nichts. Es gibt ebenfalls keine offensichtliche Methode, um die Dialoginstanz aufzurufen, die die Animation zurücksetzt.
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);
}
EDIT: Aber vielleicht gibt es eine Möglichkeit, die ProgressBar selbst abzurufen und zu animieren? Deshalb habe ich Folgendes versucht, nachdem ich diese Frage gestellt habe:
@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);
}
Aber es hat nicht funktioniertentwede!
Also, weiß jemand, ob es eine Möglichkeit gibt, die Animation in einem ProgressDialog neu zu starten?Wenn nicht, kann ich jeden showDialog () -Aufruf zwingen, onCreateDialog () aufzurufen? (Diese zweite Frage wurde von @TuomasR beantwortet, aber nachdem ich darüber nachgedacht habe, denke ich nicht, dass dies eine sehr gute Lösung für mein Problem ist.)