And*_*des 5 android android-preferences preferencefragment
我已经为我的应用程序创建了一个设置菜单PreferenceFragment,并希望从应用程序的其他位置访问设置对话框,而无需打开设置菜单.
我的设置菜单包含:

当我从主要活动中单击此菜单项时,我想显示相同的对话框:

main Activity有一个ListFragment是所有UI处理代码的地方.也不是一个PreferenceActivity或PreferenceFragment.
我只是想调用相同的PreferenceFragment对象来进入对话框,否则我必须编写自定义代码来手动处理首选项更改,我想避免.
我想加入PreferenceFragment到FragmentManager主Activity会适当地初始化它,但它似乎并没有工作.
从我的菜单处理程序代码"排序"选项:
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)
Run Code Online (Sandbox Code Playgroud)
这与一个NullPointerException打开崩溃listPref,显示PreferenceFragment未正确初始化.
有没有办法实现这种效果,还是我必须将功能写为AlertDialog并手动处理首选项更改?
小智 1
我认为您必须在 Preference 类之外自己编写此功能。
Preference、PreferenceActivity 和 PreferenceFragment 都旨在协同工作,为 Android 应用程序提供一致的 UIX。因此,建议按照预期一起使用它们。
您无法在常规活动中直接在这两个类之外复制 PreferenceActivity 或 PreferenceFragment 的 UI,因为 UI 是从 Preference 对象构建的,而不是像常规 Activity 那样从 View 对象构建。因此,如果您想要特定的 UI,则必须尝试使用自定义视图来复制它。
https://discussions.udacity.com/t/way-to-do-listpreference-outside-of-settings-menu/45473
| 归档时间: |
|
| 查看次数: |
845 次 |
| 最近记录: |