Android 首选项默认值无效

Android Preferences defaultValue not works

这是我的 preferences.xml

<PreferenceCategory android:title="@string/pref_cat_recognition">
    <ListPreference
        android:entries="@array/unitsArray"
        android:entryValues="@array/unitsValues"
        android:icon="@null"
        android:key="unit"
        android:summary="@string/units_summary"
        android:title="@string/units"
        android:defaultValue="1"/>
</PreferenceCategory>

和我的array.xml

<string-array name="unitsArray" translatable="false">
    <item>cm</item>
    <item>inch</item>
</string-array>

<string-array name="unitsValues" translatable="false">
    <item>1</item>
    <item>2</item>
</string-array>

所以它应该在开始时 cm 检查,但没有检查任何值。为什么以及如何解决该问题以在开始时具有值 cm

您的代码运行良好。您在摘要中看不到所选值的原因是您指定了自定义摘要文本。您可以使用 useSimpleSummaryProvider 来启用简单版本的摘要,也可以启用在不打开首选项的情况下看到的选定值。

为了清楚起见,请检查下面的代码:

`<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="Choose Gender">
    <ListPreference
        app:defaultValue="m"
        app:entries="@array/gender_entries"
        app:entryValues="@array/gender_values"
        app:key="gender"
        app:title="Your Gender"
        app:useSimpleSummaryProvider="true" />
</PreferenceCategory>


<PreferenceCategory app:title="Whosebug">
    <ListPreference
        app:defaultValue="1"
        app:entries="@array/unitsArray"
        app:entryValues="@array/unitsValues"
        app:key="unit"
        app:title="Units"
        app:useSimpleSummaryProvider="true" />

    <ListPreference
        app:defaultValue="1"
        app:entries="@array/unitsArray"
        app:entryValues="@array/unitsValues"
        app:key="unit"
        app:summary="Your summary goes here"
        app:title="Units" />
</PreferenceCategory>

`

This is the preference screen view

如果提供了摘要,您将看到摘要文本,而不是上图中的 default/selected 值。

原来在清单中我有 android:allowBackup="true"