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當值爲空我猜,但爲什麼它會是空的,如果我把它設置爲默認?