无法为ListPreference android preferencescreen设置字符串默认值

时间:2019-10-17 01:53:34

标签: java android

我在SO上看到其他类似的未解决问题。我找不到解决方案。 从其他答案中,我在xml上使用“ defaultValue”,但未设置ListPrefrenece的默认值。因此,listPreference在安装时会说“未设置”而不是默认值。 这是ListPreference:

<ListPreference
        android:widgetLayout="@layout/arr_dn"
        app:defaultValue="reply"
        app:entries="@array/Sweets_entries"
        app:entryValues="@array/Sweets_values"
        app:key="Sweets"
        app:title="Sweets"
        android:defaultValue="@string/defaultSweets"
        app:useSimpleSummaryProvider="true" />

字符串值:

<string name="defaultSweets">NormalSweets</string>


<string-array name="Sweets_values">
        <item>Very Sweet</item>
        <item>NormalSweets</item>
        <item>Less Sweet</item>
    </string-array>

我使用了PreferenceFragmentCompat活动,但无法识别“ onSetInitialValue”方法。我不知道在哪里实现该方法。我只想设置一个值,以便安装后不会显示“未设置”。

如何将字符串值设置为此ListPreference的默认值?

1 个答案:

答案 0 :(得分:0)

使用以下代码,我可以通过将PreferenceFragmentCompat扩展为片段来将默认值设置为ListPreference。

<ListPreference
    android:defaultValue="@string/pref_units_metric"
    android:entries="@array/pref_units_options"
    android:entryValues="@array/pref_units_values"
    android:key="@string/pref_units_key"
    android:title="@string/pref_units_label" />

字符串值:

<string name="pref_units_metric">metric</string>

<string-array name="pref_units_options">
    <item>@string/pref_units_label_metric</item>
    <item>@string/pref_units_label_imperial</item>
</string-array>

<string-array name="pref_units_values">
    <item>@string/pref_units_metric</item>
    <item>@string/pref_units_imperial</item>
</string-array>

我注意到您已经在xml文件中设置了两个defaultValue属性。只需尝试删除app:包,然后仅保留android:一个即可。希望对您有帮助!