安卓偏好设置子屏幕

4

我正在使用PreferenceFragment从xml中填充偏好设置。在我的xml中,我有一个偏好设置子屏幕。当我点击这个偏好设置时,会显示一个新的偏好设置屏幕。为了实现这一点,正如谷歌文档所说,我在我的xml文件中声明了另一个偏好设置屏幕,像这样:

 <PreferenceCategory android:title="@string/pref_info_section">

    <PreferenceScreen
        android:key="LegalPref"
        android:title="@string/legal"
        android:persistent="false">

        <Preference
            android:key="PolicyPref"
            android:title="@string/policy">               
        </Preference>

        <Preference
            android:key="OpenSourcePref"
            android:title="@string/open_source">                
        </Preference>

    </PreferenceScreen>

</PreferenceCategory>

问题是当我点击这个偏好设置项时,新屏幕显示后,我的工具栏消失了,只显示了次要的偏好设置选项。包含这个偏好设置片段的活动使用了Theme.AppCompat.Light,它一开始会显示一个工具栏,但是当我在偏好设置子屏幕中点击时(这会自动显示其他偏好设置选项,而不会创建一个新的活动),工具栏就消失了。


这可能是 https://dev59.com/2F0b5IYBdhLWcg3wSPqL 的重复。 - kazbeel
我认为这是一个非常丑陋的解决方法。我原以为自己做错了什么,但似乎这是正常行为... - Victor Manuel Pineda Murcia
1
我提出了一个缺陷,请为它投票:https://code.google.com/p/android/issues/detail?id=207718 - Leos Literak
1个回答

0

不要使用偏好设置子屏幕,而应该执行以下操作:

  1. 设计您想要作为子屏幕的片段,构造方式与主片段相似。
public  class SubFragment extends PreferenceFragment {
    ...
}

在您点击打开子屏幕的偏好设置中,编写属性:
<Preference
    android:key="to_click_on"
    app:fragment="com.packagename.SubFragment"
    ...
    />

这个应该可以单独工作,而不需要隐藏您的设置活动的工具栏。 谷歌文档中也有相同的内容。 Splitting into subscreens 文档链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接