Типичная проблема, с которой сталкиваются начинающие разработчики Android, связана с использованием SharedPreferences в контексте PreferenceActivity. Как правило, настройки приложения загружаются из xml файла в PreferenceActivity, что позволяет автоматически сохранять предпочтения пользователя в SharedPreferences.
Для примера, вот как может выглядеть простой класс, расширяющий PreferenceActivity:
public class SettingsActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); } }
Здесь используется метод addPreferencesFromResource(), который загружает настройки из xml-файла. Эти настройки, как говорится в документации, автоматически сохраняются в SharedPreferences.
Возникает вопрос, как получить доступ к этим SharedPreferences из другой Activity? Метод getSharedPreferences(name, mode) требует имя файла предпочтений, но как его узнать?
Ответ прост. Метод PreferenceManager.getDefaultSharedPreferences(context) возвращает объект SharedPreferences, который использует PreferenceActivity. Этот метод принимает контекст (обычно это текущая Activity), и возвращает SharedPreferences, которые используются в этом контексте.
Следовательно, для доступа к SharedPreferences, созданным в PreferenceActivity, достаточно вызвать этот метод в другой Activity. Вот пример:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Таким образом, не требуется знать имя файла предпочтений, созданного в PreferenceActivity. Метод getDefaultSharedPreferences() сам найдет нужный файл и вернет его.
Добавить комментарий