PreferenceManager.setDefaultValues不适用于自定义首选项

时间:2019-02-28 09:14:33

标签: android android-preferences default-value

我正在开发一个具有很多可修改首选项的小应用程序,其中大多数是SeekBarPreferences

碰巧的是,由于我对Android默认SeekBarPreferences并不满意,因此我使用的是非常好的MaterialSeekBarPreference库,不幸的是两年没有更新。

这是该库使用的代码示例:

<com.pavelsikun.seekbarpreference.SeekBarPreference
    android:key="@string/param_maxEvent"
    android:title="Blahlblahblahblahblah"
    android:summary="Blahlblahblahblahblah too"
    android:defaultValue="2"
    custom:msbp_minValue="0"
    custom:msbp_maxValue="5"
    custom:msbp_measurementUnit="events"
    custom:msbp_interval="1"
    custom:msbp_dialogEnabled="false"/>

如您所见,您可以使用android:defaultValue xml属性,它与UI完美配合。

由于我需要在应用初始化时加载所有这些默认值,因此我使用PreferenceManager.setDefaultValues方法:

public class App extends Application {
    @Override public void onCreate() {
        super.onCreate();
        PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
    }
}

这对于所有默认首选项(SwitchPreferenceListPreferencePreference)都适用,但不幸的是,不适用于这些自定义SeekBarPreference

加载首选项活动也不会设置这些默认值。

有没有解决此问题的方法?否则,如果我要编辑库,应该更改什么?

1 个答案:

答案 0 :(得分:0)

我不使用方法 PreferenceManager.getDefaultSharedPreferences(this, R.xml.preferences, true);。相反,我在 Fragment 中使用了 preference.setDefaultValue(object);