I am using a PreferenceActivity to let the user set some values. I am feeding it the xml file with the defined preferences.
I have set all the android:defaultV
define class extends android.preference.Preference
public class IntegerPreference extends Preference {
public IntegerPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public IntegerPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public IntegerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public IntegerPreference(Context context) {
super(context);
}
@Override
protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
super.onSetInitialValue(restorePersistedValue, defaultValue);
persistInt((Integer) defaultValue);
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return a.getInt(index, -1);
}
}
public class StringSetPreference extends Preference {
public StringSetPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public StringSetPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public StringSetPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public StringSetPreference(Context context) {
super(context);
}
@Override
protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
super.onSetInitialValue(restorePersistedValue, defaultValue);
persistStringSet((Set) defaultValue);
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return Stream.of(a.getTextArray(index)).map(String::valueOf).collect(Collectors.toSet());
}
}
define preference XML resource
then initialize default value and access
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
Map allKeys = PreferenceManager.getDefaultSharedPreferences(this).getAll();
int iii = PreferenceManager.getDefaultSharedPreferences(this).getInt("III", -1);
float fff = PreferenceManager.getDefaultSharedPreferences(this).getFloat("FFF", 0);
Log.d(TAG, "allKeys=" + allKeys + " iii=" + iii + " fff=" + fff);
//Logcat
10-13 06:53:06.986 12594 12594 D MainActivity: allKeys={III=101, BBB=true, SSS=SSS, FFF=1.2, SSET=[XXX, ZZZ, YYY]} iii=101 fff=1.2