Предпочтения Android: Как загрузить значения по умолчанию, когда пользователь не использовал предпочтительный экран?

Я использую PreferenceActivity, чтобы позволить пользователю установить некоторые значения. Я подаю его XML-файл с определенными предпочтениями.

Я установил весь android:defaultValue="" для них.

Когда я запускаю свое приложение, мне нужны предпочтения, или если они не установлены еще вручную, я хочу значения по умолчанию:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false); 

Однако, когда android:defaultValue="true" Я все еще добираюсь false. Так, похоже, что набор defaultValues в XML не используется нигде, но при инициализации предпочтительного экрана.

Я не хочу к hardcode значений по умолчанию в getBoolean() метод. Так, есть ли путь, получают значения по умолчанию только с определением их в 1 месте?

109
задан Peterdk 22 April 2010 в 14:40
поделиться

2 ответа

этот вопрос похож на мой:

initialize-preferences-from-xml-in-main-activity

Просто используйте этот код в методе onCreate :

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

Он загрузит ваши предпочтения из XML, а последний параметр ( readAgain ) гарантирует, что предпочтения пользователя не будут перезаписаны.

Для дальнейшего изучения изучите PreferenceManager.setDefaultValues ​​ в Android API.

161
ответ дан 24 November 2019 в 03:23
поделиться

Например, расширение DialogPreference Я делаю следующее:

@Override
protected void onSetInitialValue(boolean restore, Object defaultValue) {
    super.onSetInitialValue(restore, defaultValue);

    if (restore) {
        mValue = shouldPersist() ? getPersistedString(mDefault) : mDefault;
    } else {
        mValue = mDefault;
    }
}

mDefault может быть:

  • mContext.getResources (). getString (attrs.getAttributeResourceValue (androidns, "defaultValue", 100));
  • то, что вы проиндексировали в R.
2
ответ дан 24 November 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: