未存储<preference>的DefaultValue,PreferenceManager是否忽略它?</preference>

时间:2013-05-30 09:21:52

标签: android sharedpreferences preferences android-support-library

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

我使用this workaround构建了一个与android-support-library兼容的PreferenceFragment。它工作正常,实现起来非常简单。

打开此片段时(在onCreate()中),每个Preference的当前值将通过使用以下内容显示在首选项对象的摘要中:

preference.setSummary(stringValue);

适用于所有EditTextPreferenceListPreference和 - 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?

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

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

0 个答案:

没有答案