に基づいてアプリの設定メニューを作成しましたPreferenceFragment。設定メニューを開かずに、アプリの他の場所から設定ダイアログにアクセスしたいと考えています。
私の設定メニューにはこれがあります:

メインアクティビティからこのメニュー項目をクリックしたときに同じダイアログを表示したい:

メインActivityにListFragmentは、すべての UI 処理コードがある場所があります。も もありませPreferenceActivityんPreferenceFragment。
同じオブジェクトを呼び出してダイアログにアクセスしたいだけですPreferenceFragment。そうしないと、設定の変更を手動で処理するカスタム コードを記述しなければならず、これは避けたいと思います。
メインにを追加PreferenceFragmentすると適切にインスタンス化されると思いましたが、うまくいかないようです。FragmentManagerActivity
「並べ替え」オプションのメニュー ハンドラー コードから:
SettingsFragment fragment = (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsActivity.FRAGMENT_TAG);
// first run case
if (fragment == null) {
fragment = SettingsFragment.newInstance(getActivity());
getFragmentManager().beginTransaction().add(fragment, SettingsActivity.FRAGMENT_TAG).commit();
}
CustomListPreference listPref = (CustomListPreference) fragment.findPreference(SettingsFragment.KEY_PREF_SORTORDER);
listPref.show(); // invokes showDialog(null)
これは、が正しく初期化されなかったことを示すNullPointerExceptiononでクラッシュします。listPrefPreferenceFragment
この効果を達成する方法はありますか、または機能を AlertDialog として記述し、設定の変更を手動で処理する必要がありますか?