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

trainingnavtop=true

@jd:body


<div id="tb-wrapper">
<div id="tb">

<h2>Содержание этого урока</h2>
<ol>
  <li><a href="#GetSharedPreferences">Получение средства обработки SharedPreferences</a></li>
  <li><a href="#WriteSharedPreference">Запись в общие настройки</a></li>
  <li><a href="#ReadSharedPreference">Чтение общих настроек</a></li>
</ol>

<h2>См. также:</h2>
<ul>
  <li><a href="{@docRoot}guide/topics/data/data-storage.html#pref">Использование общих настроек</a></li>
</ul>

</div>
</div>


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

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

<p class="note"><strong>Примечание.</strong> API-интерфейсы {@link android.content.SharedPreferences} предназначены
только для чтения и записи пар "ключ-значение", и их не следует путать с API-интерфейсами
{@link android.preference.Preference}, которые помогают создать пользовательский интерфейс
для настроек приложения (хотя они используют {@link android.content.SharedPreferences} в качестве своей
реализации для сохранения настроек приложения). Информацию об использовании API-интерфейсов {@link
android.preference.Preference} см. в руководстве <a href="{@docRoot}guide/topics/ui/settings.html">Настройки</a>.</p>

<h2 id="GetSharedPreferences">Получение средства обработки SharedPreferences</h2>

<p>Чтобы создать новый файл общих настроек или получить доступ к существующему,
нужно вызвать один из двух методов:</p>
<ul>
  <li>{@link android.content.Context#getSharedPreferences(String,int)
getSharedPreferences()} &mdash; Используйте этот метод, если вам потребуется несколько общих файлов настроек, идентифицируемых
по имени, указанном в первом параметре. Этот метод можно вызвать из любого
{@link android.content.Context} в вашем приложении.</li>
  <li>{@link android.app.Activity#getPreferences(int) getPreferences()} &mdash; Используйте метод из
{@link android.app.Activity}, если вам нужен
только один файл общих настроек для операции. Поскольку при этом получается файл общих
настроек по умолчанию, относящийся к операции, вам не нужно указывать имя.</li>
</ul>

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

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

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

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

<pre>
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
</pre>

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


<h2 id="WriteSharedPreference">Записать в общие настройки</h2>

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

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

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


<h2 id="ReadSharedPreference">Чтение общих настроек</h2>

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

<pre>
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);
</pre>

