How I would go about this is to first have a shared preferences, with all the optional user defined values.
Here is a helper class that can give you an idea of what I'm talking about.
(Documentation for Shared Preferences here: https://developer.android.com/reference/android/content/SharedPreferences)
public class UserDefinedValuesHelper {
public static String VALUES = "VALUES";
// Define your values as Static String for easy access
public static String EXAMPLEVALUEKEYNAME = "EXAMPLEVALUEKEYNAME";
public UserDefinedValuesHelper (Context context) {
definedValues = context.getSharedPreferences(VALUES, MODE_PRIVATE);
}
public void saveValueString(String key, String value) {
SharedPreferences.Editor editor = definedValues.edit();
editor.putString(key, value);
editor.apply();
}
//Create getters for all your values
public String getExampleKeyName() {
return definedValues.getString(EXAMPLEVALUEKEYNAME, R.string.examplestring);
//the first parameter of definedValues.getString is the Key. If it is null than the second parameter is the default value and is returned.
}
}
Examples of using the helper in another class
//instantiate userDefinedValuesHelper at top of class
UserDefinedValuesHelper userDefinedValuesHelper;
//define userDefinedValuesHelper onCreate/initialize of class
userDefinedValuesHelper = new UserDefinedValuesHelper(this);
//Saving to userDefinedValuesHelper
userDefinedValuesHelper.saveValueString(userDefinedValuesHelper.EXAMPLEVALUEKEYNAME, "myStringValueHere");
//Getting String value
String myStringValue = userDefinedValuesHelper.getExampleKeyName();