也许问题非常微不足道,我的谷歌技能不够好,但我找不到任何解决方案来解决以下问题。
我使用this workaround构建了一个与android-support-library兼容的PreferenceFragment。它工作正常,实现起来非常简单。
打开此片段时(在onCreate()
中),每个Preference的当前值将通过使用以下内容显示在首选项对象的摘要中:
preference.setSummary(stringValue);
适用于所有EditTextPreference
,ListPreference
和 - CheckboxPreference
的简单添加。但我有另一个偏好:
<Preference
android:key="minInputLength"
android:defaultValue="@integer/numberPickerInputLengthDefaultValue"
android:title="@string/minInputLength"/>
当应用程序的缓存为空且调用onCreate
方法时,虽然我已调用此方法,但此优先级的摘要仅为空,尽管我已调用此方法:
PreferenceManager.setDefaultValues(this, R.layout.fragment_settings, true);
在主要活动中。否则,所有其他首选项的摘要也将为空。
上面的Preference只会打开一个Dialog,其内容区域中包含一个简单的NumberPicker。如果我更改NumberPicker中的值并通过按对话框的PositiveButton退出对话框,则此首选项的摘要会按预期更改。如果我清除缓存并再次打开片段,则摘要再次为空。
所以我试图找出原因并通过LogCat显示所有SharedPreferences,并认识到这只缺少这个偏好。 这就是我问自己的原因:PreferenceManager是否忽略了<preference />
在xml中声明的defaultValue?
编辑: 或者这个问题是由我提到的解决方法引起的?
这两个链接总结了我的研究,但没有解决我的问题(或者我太盲目看不到):