也许这个问题非常微不足道,我的谷歌技能还不够好,但我找不到以下问题的任何解决方案。
通过使用此解决方法,我构建了一个与 android-support-library 兼容的 PreferenceFragment 。它工作正常,实现起来非常简单。
打开此 Fragment(在 中onCreate()
)时,每个首选项的当前值将显示在首选项对象的摘要中,方法是:
preference.setSummary(stringValue);
它适用于所有人EditTextPreference
,ListPreference
而且 - 只需简单添加 -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 />
?
编辑:或者这个问题是由我提到的解决方法引起的?
这两个链接总结了我的研究,但我的问题没有解决方案(或者我太盲目了):