2

也许这个问题非常微不足道,我的谷歌技能还不够好,但我找不到以下问题的任何解决方案。

通过使用此解决方法,我构建了一个与 android-support-library 兼容的 PreferenceFragment 。它工作正常,实现起来非常简单。

打开此 Fragment(在 中onCreate())时,每个首选项的当前值将显示在首选项对象的摘要中,方法是:

preference.setSummary(stringValue);

它适用于所有人EditTextPreferenceListPreference而且 - 只需简单添加 -CheckboxPreference也适用于 。但我有另一个偏好:

<Preference 
    android:key="minInputLength"
    android:defaultValue="@integer/numberPickerInputLengthDefaultValue"
    android:title="@string/minInputLength"/>

当 App 的缓存为空并onCreate调用该方法时,这个和只有这个首选项的摘要是空的,虽然我已经调用了这个方法:

PreferenceManager.setDefaultValues(this, R.layout.fragment_settings, true);

在主要活动中。否则,所有其他首选项的摘要也将为空。

上面的 Preference 只是打开一个 Dialog,它的内容区域包含一个简单的 NumberPicker。如果我更改 NumberPicker 中的值并通过按对话框的 PositiveButton 退出对话框,则此 Preference 的摘要会按预期更改。如果我清除缓存并再次打开片段,摘要再次为空

因此,我试图找出原因并通过 LogCat 显示所有 SharedPreferences 并认识到缺少这个并且只有这个首选项。这就是我问自己的原因:PreferenceManager 是否忽略了在 xml 中声明的 defaultValue <preference />

编辑:或者这个问题是由我提到的解决方法引起的?

这两个链接总结了我的研究,但我的问题没有解决方案(或者我太盲目了):

4

0 回答 0