我已经基于
我的设置菜单如下图所示: 我想在主活动中点击此菜单项时显示相同的对话框: 主
我只想调用相同的
我认为将
以下是“排序”选项的菜单处理程序代码:
PreferenceFragment
创建了一个应用程序的设置菜单,并希望在不打开设置菜单的情况下从应用程序的其他位置访问设置对话框。我的设置菜单如下图所示: 我想在主活动中点击此菜单项时显示相同的对话框: 主
Activity
有一个ListFragment
,所有UI处理代码都在那里。两者都不是PreferenceActivity
或PreferenceFragment
。我只想调用相同的
PreferenceFragment
对象以获得对话框,否则我将不得不编写自定义代码手动处理首选项更改,我想避免这种情况。我认为将
PreferenceFragment
添加到主Activity
的FragmentManager
中会正确实例化它,但似乎不起作用。以下是“排序”选项的菜单处理程序代码:
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)
在 listPref
上会发生 NullPointerException
,这表明 PreferenceFragment
没有被正确初始化。
有没有办法实现这个效果,还是我必须将功能编写为 AlertDialog 并手动处理 Preference 更改?