SharedPreferences из нескольких файлов - PullRequest
1 голос
/ 23 января 2011

У меня есть 2 файла для SharedPreferences (один отображается в PreferenceActivity, а второй хранит значения, которые не должны отображаться в PreferenceActivity).Проблема - я хочу загрузить эти значения из обоих файлов при запуске.

  1. Я попытался getSharedPreferences() и передал имя файла.Странно, я не могу прочитать реальные значения - он всегда возвращает значения по умолчанию.

  2. Если я использую addPreferencesFromResource() и передаю идентификатор файла ресурса, он читает значения, но яЯ не могу использовать этот подход, потому что мой Activity должен подкласс PreferenceActivity, что я не хочу делать.

Как я могу прочитать значения из нескольких файлов настроек?Что нужно передать в getSharedPreferences() в качестве первого аргумента (имя файла с расширением, имя файла без расширения и т. Д.)?

Существует метод PreferenceManager.getDefaultSharedPreferences().Что такое «по умолчанию», если у меня более 1 файла?

Такая простая задача, так много времени уходит ...

1 Ответ

2 голосов
/ 17 февраля 2011

Краткий ответ: звучит так, как будто вы звоните PreferenceManager.getGlobalPreferences в какой-то момент, который будет загружать файл настроек по умолчанию, а не ваши «именованные» настройки. Если вы смешаете это и context.getSharedPreferences("PREFS_NAME", Context.MODE_WORLD_READABLE), вы получите странное поведение.

Длинный ответ: Вы должны указать имя файла настроек, который вы будете читать каждый раз, когда открываете его:

SharedPreferences prefs = context.getSharedPreferences("PREFS_NAME", Context.MODE_WORLD_READABLE)

Это заставит приложение создать новый файл настроек с именем «PREFS_NAME.xml», если он еще не существует, и начать его использовать.

addPreferencesFromFile () - это другая функция, которая используется только для заполнения PreferenceActivity. Если вы не хотите использовать PreferenceActivity, тогда это бесполезно для вас.

Если вы решили использовать действие предпочтения для своих настроек, используйте вышеизложенное, затем установите предпочтения для этого экземпляра действия предпочтения с помощью

getPreferenceManager().setSharedPreferencesName("PREF_NAME);

Тогда позвоните addPreferencesFromResource(). Если вы не используете PreferenceActivity, то addPreferencesFromResource () ничего не сделает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...