ProgressDialog, созданный из onCreateDialog, останавливает анимацию при втором запуске

Я создаюProgressDialog вonCreateDialog() вот так:

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 в своей мудрости (или серьезном недостатке) решает кэшировать каждый диалог, созданный с помощью onCreateDialog (). Из-за этого любой последующий вызовshowDialog(DIALOG_PROGRESS_ID) в результате используется тот же экземпляр ProgressDialog, но анимация перестала работать.

Я пытался восстановить неопределенный вonPrepareDialog(), но это ничего не делает. Также нет очевидного метода вызова экземпляра диалога, который будет сбрасывать анимацию.

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);
}

РЕДАКТИРОВАТЬ: Но может быть есть способ получить сам ProgressBar и начать его анимацию? поэтому я попробовал следующее после того, как задал этот вопрос:

@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);

}

Но это не сработалоили!

Итак, кто-нибудь знает, есть ли способ перезапустить анимацию на ProgressDialog?Если нет, есть ли способ заставить каждый вызов showDialog () вызывать onCreateDialog ()? (на этот второй вопрос ответил @TuomasR, но, подумав, я не думаю, что это очень хорошее решение моей проблемы)

Ответы на вопрос(2)

Ваш ответ на вопрос