0
我做了一个自定义DialogPreference,在我的设置中有一个seekbar对话框,并使用bindPreferenceSummaryToValue
默认情况下使用设置活动将其摘要绑定到它的值。 (请参阅下面的内容)一切工作正常,但是当第一组设置中的设置没有设置为默认设置时,而是设置为0,因为0在bindPreferenceSummaryToValue中设置为后备值。未使用自定义DialogPreference和bindPreferenceSummaryToValue设置默认值
private static void bindPreferenceSummaryToValue(Preference preference) {
preference.setOnPreferenceChangeListener(bindPreferenceSummaryToValueListener);
if (preference instanceof SeekBarPreference) {
bindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager.getDefaultSharedPreferences(preference.getContext()).
getInt(preference.getKey(), 0)); // Fallback value
} else {
...
在我的自定义DialogPreference我有以下几种方法:
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return a.getInt(index, 0);
}
@Override
protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
progress= restorePersistedValue ? getPersistedInt(progress) : (int) defaultValue;
}
课程的prefs.xml和我有:
<SeekBarPreference
android:defaultValue="10"
android:key="my_key"
... />
这在MainActivity:
PreferenceManager.setDefaultValues(this, R.xml.prefs, false);
使用后备值d当值为空我猜,但为什么它会是空的,如果我把它设置为默认?