page.title=Сохранение наборов "ключ-значение" page.tags=хранение данных helpoutsWidget=true trainingnavtop=true @jd:body

Содержание этого урока

  1. Получение средства обработки SharedPreferences
  2. Запись в общие настройки
  3. Чтение общих настроек

См. также:

Если вы хотите сохранить относительно небольшой набор пар "ключ-значение", используйте {@link android.content.SharedPreferences} API-интерфейсы. Объект {@link android.content.SharedPreferences} указывает на файл, содержащий пары "ключ-значение", и предоставляет простые методы для чтения и записи. Управление каждым файлом {@link android.content.SharedPreferences} осуществляется с помощью инфраструктуры и может быть частным или общим.

На этом уроке вы узнаете, как использовать API-интерфейсы {@link android.content.SharedPreferences} для сохранения и получения простых значений.

Примечание. API-интерфейсы {@link android.content.SharedPreferences} предназначены только для чтения и записи пар "ключ-значение", и их не следует путать с API-интерфейсами {@link android.preference.Preference}, которые помогают создать пользовательский интерфейс для настроек приложения (хотя они используют {@link android.content.SharedPreferences} в качестве своей реализации для сохранения настроек приложения). Информацию об использовании API-интерфейсов {@link android.preference.Preference} см. в руководстве Настройки.

Получение средства обработки SharedPreferences

Чтобы создать новый файл общих настроек или получить доступ к существующему, нужно вызвать один из двух методов:

Например, следующий код выполняется в {@link android.app.Fragment}. Он получает доступ к файлу общих настроек, идентифицируемому по строке ресурсов {@code R.string.preference_file_key} и открывает его, используя закрытый режим так, что данный файл доступен только вашему приложению.

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

Файлу общих настроек следует присваивать имя, которое ваше приложение может уникально идентифицировать, например {@code "com.example.myapp.PREFERENCE_FILE_KEY"}.

Если для вашей операции нужен только один файл общих настроек, вы можете использовать метод {@link android.app.Activity#getPreferences(int) getPreferences()}:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Внимание! Если вы создадите общий файл настроек с {@link android.content.Context#MODE_WORLD_READABLE} или {@link android.content.Context#MODE_WORLD_WRITEABLE}, ваши данные будут доступны всем другим приложениям, которым известен идентификатор файла.

Записать в общие настройки

Для записи в файл общих настроек создайте объект {@link android.content.SharedPreferences.Editor} посредством вызова {@link android.content.SharedPreferences#edit} в {@link android.content.SharedPreferences}.

Передайте ключи и значения, которые хотите записать, с помощью таких методов, как {@link android.content.SharedPreferences.Editor#putInt putInt()} и {@link android.content.SharedPreferences.Editor#putString putString()}. Затем вызовите {@link android.content.SharedPreferences.Editor#commit} для сохранения изменений. Например:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

Чтение общих настроек

Для получения значений из файла общих настроек следует вызвать такие, методы как {@link android.content.SharedPreferences#getInt getInt()} и {@link android.content.SharedPreferences#getString getString()}, предоставляя ключ для нужного вам значения, а также при желании значение по умолчанию, которое будет выводиться при отсутствии ключа. Например:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);