Androidで画面回転したときに、Activity/Fragmentが再生成されますが、通信などの別スレッドが動いている途中に回転された場合にどのように別スレッドの処理結果を再生成後のFragmentなどで受け取ればよいのかで悩んでいます。
(画面レイアウトが縦と横で異なるため、画面が再生成されない方法は使用していません。)

現在デバッグ中のコードの処理概要は下記のような感じです。

  • ProgressDialogFragmentを表示
  • Volleyで通信
  • VolleyのコールバックでProgressDialogを閉じてActivity/Fragmentに通信で得られた内容を表示

このコードは、通信中に画面を回転されない場合はうまく動作します。
通信中に画面を回転させた場合、getFragmentManager()NullpointerExceptionが発生します。
また、ProgressDialog関連コードを削除して実行してみましたが、通信結果の表示mTextView.setText(response)が画面に反映されません。

画面回転時にFragmentが再生成されるために、コールバックされたところが再生成以前の場所のために起こるのだと考えています。

通信中に画面を回転させた場合でも、ProgressDialogを消し、通信結果を画面に表示するにはどうすればよろしいでしょうか?

public class MyFragment extends Fragment implements View.OnClickListener {

・・・省略・・・

    @Override
    public void onClick(View v) {
        MyProgressDialog dialog = MyProgressDialog.newInstance("メッセージ");
        dialog.show(getFragmentManager(), MyProgressDialog.FRAGMENT_TAG);

        String url = "http://~~~~~~~~~";

        StringRequest request = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.v(TAG, response);
                mTextView.setText(response);
                MyProgressDialog progressDialog = (MyProgressDialog) getFragmentManager().findFragmentByTag(MyProgressDialog.FRAGMENT_TAG);
                if (progressDialog != null) {
                    progressDialog.dismiss();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        });
        MyApplication.getInstance().getRequestQueue().add(request);
    }
}