PreferenceFragmentの使い方

公式開発ガイドのとおりにするとエラーになるんだけどな・・・

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
}

画面を回転させた時にonCreateが呼ばれると、super.onCreate()が終わった時にすでにPreferenceFragmentが復元されている。
この時は // Display the fragment as the main content. はいらないんじゃないか?
ただPreferenceFragmentを表示する分には問題ないみたいだけど、DialogFragmentを使うとエラーが起きる。


・PreferenceFragmentを表示
・DialogFragmentを表示
・画面を回転
・DialogFragmentが呼出すPreferenceFragmentのonActivityResult()で再度DialogFragmentを表示


DialogFragment#show(FragmentManager, int)のためにPreferenceFragment#getFragmentManager()を使用するのだが、これがnullを返してくる。
getActivity()もnullを返してくるし、PreferenceFragmentの状態がおかしくなっているらしい。

if (getFragmentManager().findFragmentById(android.R.id.content) != null) {
    return;
}
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
        .replace(android.R.id.content, new SettingsFragment())
        .commit();

とすればいいらしい。
それともDialogFragmentの使い方がおかしいのかな?
ちゃんとgetTargetFragment(), setTargetFragment()を使ってるんだけど・・・