在以前版本的支持库中,我们可以使用标题来拥有一个设置的主菜单屏幕,每个屏幕都会打开一个新的设置屏幕(片段)。
现在标题消失了(如这里所写)一段时间,我认为在 android-x 上情况变得更糟:
你会注意到这里没有的一件事是首选项标题,你是完全正确的。然而,这并不意味着单个偏好列表需要跨越 10 英寸平板电脑屏幕。相反,您的 Activity 可以实现 OnPreferenceStartFragmentCallback ( link ) 以使用 app:fragment 属性或 OnPreferenceStartScreenCallback ( link ) 处理首选项以处理 PreferenceScreen 首选项。这允许您在一个窗格中构造“标题”样式 PreferenceFragmentCompat 并使用这些回调替换第二个窗格,而无需在两种不同类型的 XML 文件中工作。
问题是,我没有在新的 android-x API 上使用这些。
每个片段都有自己的首选项 XML 树(使用setPreferencesFromResource内onCreatePreferences),但我提出的每个解决方案要么什么都不做,要么崩溃。
以直观的方式来说,这就是我想要实现的目标:
由于有多个子设置屏幕,将所有子设置屏幕的所有首选项都放在主设置屏幕的一个 XML 文件中会非常麻烦。
我唯一成功的是使用 PreferenceScreen 来保存应该显示的子屏幕的首选项。
这是此类事情的工作代码(可在此处获得项目):
首选项.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="Demo">
<PreferenceScreen
android:key="screen_preference" android:summary="Shows another screen of preferences"
android:title="Screen preferenc">
<CheckBoxPreference
android:key="next_screen_checkbox_preference"
android:summary="Preference that is on the next screen but same hierarchy"
android:title="Toggle preference"/> …Run Code Online (Sandbox Code Playgroud) android android-preferences android-fragments preferencefragment androidx