Я использую PreferenceActivity, чтобы позволить пользователю установить некоторые значения. Я подаю его XML-файл с определенными предпочтениями.
Я установил весь android:defaultValue=""
для них.
Когда я запускаю свое приложение, мне нужны предпочтения, или если они не установлены еще вручную, я хочу значения по умолчанию:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false);
Однако, когда android:defaultValue="true"
Я все еще добираюсь false
. Так, похоже, что набор defaultValues в XML не используется нигде, но при инициализации предпочтительного экрана.
Я не хочу к hardcode значений по умолчанию в getBoolean()
метод. Так, есть ли путь, получают значения по умолчанию только с определением их в 1 месте?
этот вопрос похож на мой:
initialize-preferences-from-xml-in-main-activity
Просто используйте этот код в методе onCreate
:
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Он загрузит ваши предпочтения из XML, а последний параметр ( readAgain
) гарантирует, что предпочтения пользователя не будут перезаписаны.
Для дальнейшего изучения изучите PreferenceManager.setDefaultValues в Android API.
Например, расширение DialogPreference
Я делаю следующее:
@Override
protected void onSetInitialValue(boolean restore, Object defaultValue) {
super.onSetInitialValue(restore, defaultValue);
if (restore) {
mValue = shouldPersist() ? getPersistedString(mDefault) : mDefault;
} else {
mValue = mDefault;
}
}
mDefault может быть: