ProgressDialog criado a partir de onCreateDialog para de animar na segunda execução

Eu crio umProgressDialog noonCreateDialog() igual a:

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

O Android, em sua sabedoria (ou falta grave), decide armazenar em cache todas as caixas de diálogo criadas por meio de onCreateDialog (). Por esse motivo, qualquer chamada subsequente parashowDialog(DIALOG_PROGRESS_ID) resulta na mesma instância ProgressDialog sendo usada, mas a animação parou de funcionar.

Eu tentei redefinir indeterminado emonPrepareDialog(), mas isso não faz nada. Da mesma forma, não existe um método óbvio para chamar a instância de diálogo que redefinirá a animação.

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: Mas talvez haja uma maneira de obter o ProgressBar em si e começar a animar? então tentei o seguinte depois de fazer esta pergunta:

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

}

Mas não funcionouou!

Então, alguém sabe se existe uma maneira de reiniciar a animação em um ProgressDialog?Caso contrário, existe uma maneira de eu forçar cada chamada showDialog () a chamar onCreateDialog ()? (esta segunda pergunta foi respondida por @TuomasR, mas depois de ponderá-la, não acho que seja uma solução muito boa para o meu problema)

questionAnswers(4)

yourAnswerToTheQuestion