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"
这是我的 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"