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.)

Antworten auf die Frage(8)

Ihre Antwort auf die Frage