Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
10 Июл 2023
1 мин
65

Получение SharedPreferences из PreferenceActivity в Android

Типичная проблема, с которой сталкиваются начинающие разработчики Android, связана с использованием SharedPreferences в контексте PreferenceActivity. Как правило, настройки

Типичная проблема, с которой сталкиваются начинающие разработчики 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() сам найдет нужный файл и вернет его.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий