2011-01-22 7 views
1

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

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

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

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

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

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

ответ

2

Короткий ответ: это звучит, как вы вызываете 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() ничего не сделает для вас.

Смежные вопросы