DialogFragment の dismiss で落ちる

DialogFragment#dismiss を呼ぶと、画面回転させなければダイアログ消滅に問題が起きないが、
画面回転が発生後、dismiss を呼ぶと以下のように落ちてしまう。

E/AndroidRuntime(22523): FATAL EXCEPTION: main
E/AndroidRuntime(22523): java.lang.NullPointerException
E/AndroidRuntime(22523): at android.app.DialogFragment.dismissInternal(DialogFragment.java:287)
E/AndroidRuntime(22523): at android.app.DialogFragment.dismiss(DialogFragment.java:258)

onDismiss(dialog) を呼べば良いらしいが、ProgressDialog DialogFragment で表示させる場合、
画面回転した後には、呼んでもダイアログが残ってしまう。

素直に、DialogFragment から getDialog() で取得した ProgressDialog dismiss すれば、
画面回転した後に、ダイアログを消すことができた。

ProgressDialog を表示する DialogFragment は、以下のように、、

import android.app.Dialog;
import android.app.DialogFragment;
import android.app.ProgressDialog;
import android.os.Bundle;
/**
 * ProgressDialogFragment
 */

public class ProgressDialogFragment extends DialogFragment{
   // Bundle でタイトル、メッセージ、プログレス最大値、を取得する為の Key
   public final static String TITLE   = "Title";
   public final static String MESSAGE = "Message";
   public final static String MAX     = "Max";
   
   private static ProgressDialog progressDialog;

   // インスタンス生成は、必ずこれを使う。
   public static ProgressDialogFragment newInstance(){
      return new ProgressDialogFragment();
   }
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState){
      if (progressDialog != null) return progressDialog;
      setCancelable(false);
      progressDialog = new ProgressDialog(getActivity());
      progressDialog.setTitle(getArguments().getString(TITLE));
      progressDialog.setMessage(getArguments().getString(MESSAGE));
      progressDialog.setIndeterminate(false);
      progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
      progressDialog.setMax(getArguments().getInt(MAX));
      progressDialog.setProgress(0);
      return progressDialog;
   }
   // ProgressDialog 値の更新
   public void updateProgress(int value){
      if (progressDialog != null) progressDialog.setProgress(value);
   }


   @Override
   public Dialog getDialog(){
      return progressDialog;
   }
}

AsyncTask で、プログレス表示するケースでは、、、
onPreExecute で上記、ProgressDialogFragment を生成して表示する。

public class MyTask extends AsyncTask<String,Integer,Long>{
   private Activity activity;
   ProgressDialogFragment dialogFragment;

   public MyTask(Activity activity){
      this.activity = activity;
   }
   @Override
   protected void onPreExecute(){
      Bundle args = new Bundle();
      args.putString(ProgressDialogFragment.TITLE, "Title");
      args.putString(ProgressDialogFragment.MESSAGE, "Loading Data ...");
      args.putInt(ProgressDialogFragment.MAX, 100);
      dialogFragment = ProgressDialogFragment.newInstance();
      dialogFragment.setArguments(args);
      dialogFragment.show(activity.getFragmentManager(), "progress");

   }
   
   // doInBackground ...

   @Override
   protected void onProgressUpdate(Integer...values){
      dialogFragment.updateProgress(values[0]);
   }
   // プログレス達したら、getDialog().dismiss() を実行
   @Override
   protected void onPostExecute(Long result){
      dialogFragment.getDialog().dismiss();
   }
}