в принятом ответе Pixel:
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
указано, что false
означает, что значения по умолчанию не будут перезаписаны. Это не то, что он делает, это просто флаг эффективности, чтобы остановить анализ, если ваше приложение имеет более одной точки входа. К сожалению, тест проводится не для каждого файла настроек, поэтому, если у вас есть более одного файла настроек, вы должны указать true
на всех, кроме первого.
Если вы беспокоитесь об эффективности, вы можете написать что-то вроде этого.
final static private int SPL = 1;
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
if (sp.getInt("spl", 0) != SPL)
{
PreferenceManager.setDefaultValues(this, R.xml.prefs1, true);
PreferenceManager.setDefaultValues(this, R.xml.prefs2, true);
sp.edit().putInt("spl", SPL).apply();
}
Если вы когда-нибудь добавите больше общих настроек, просто установите SPL на высокое число.