Сохраняем настройки приложения с помощью Shared Preferences
Главная » Сохраняем настройки приложения с помощью Shared Preferences

В этом уроке мы научимся выполнять сохранение данных нашего приложения для того, чтобы при следующих его запусках воссоздать сохраненное, а не вводить заново. Самый, наверное, распространенный и полезный способ от такого сохранения - это сохранение логина и пароля к чему либо: аккаунту, архиву и многое другое. Хотя на паролях все возможности далеко не исчерпываются, но мы рассмотрим пример использования стандартного интерфейса Shared Preferences на примере сохранения текстовых данных. Мы сделаем Android приложение, в котором будет два поля для ввода логина и пароля (любых двух слов) и две кнопки, сохранить и загрузить. Если заполнить поля ввода, но не нажать кнопку сохранить - введенные данные будут теряться, если же перед выходом пользователь нажмет на кнопку "Сохранить" то при следующем запуске он нажмет кнопку "Загрузить" и поля автоматически заполнятся введенными и сохраненными ранее символами.

Сохранение данных с помощью Shared Preferences происходит благодаря тому, что при сохранении данных таким образом, приложение создает специальный xml файл, где будет храниться нужная информация, и при нужде получить сохраненные данные, программа будет обращаться к этому xml файлу. Файл храниться в системе устройства по адресу  /data/data/НАЗВАНИЕ_ПРОЕКТА/shared_prefs.

Интерфейс для сохранения настроек Shared Preferences довольно прост в использовании. Для этого вызывается специальный метод под названием getPreferences(). По отношению к введенным данным можно выбрать 3 уровня доступности:

- MODE_PRIVATE - только это приложение может читать настройки с xml файла;

- MODE_WORLD_READABLE - все приложения могут читать с xml файла;

- MODE_WORLD_WRITEABLE - все приложения могут выполнять запись в xml файл.

После объявления метода работы с Shared Preferences нужно создать объект Editor, который нужен для создания пар имя-значение, которые будут записаны в xml файл для сохранения с помощью метода put(). Для успешного внесения данных в файл сохранения в конце нужно выполнить команду commit

Для того, чтобы извлечь сохраненные данные, нужно обратиться к ним с помощью команды get (), ссылаясь на необходимые пары-значения.

Итак, начнем делать наше приложение, описанное вначале. Создаем новый проект, выбираем Blank Activity. Интерфейс программы будет иметь два поля для ввода текста и две кнопки. Открываем файл activity_main.xml и добавляем в него следующее:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical">
 <EditText
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/et1"/>
 <EditText
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:id="@+id/et2"/>
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/button1"
 android:text="Сохранить"
 android:onClick="save"/>
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/button2"
 android:text="Загрузить"
 android:onClick="load"/>
</LinearLayout>

Теперь открываем MainActivity.java и добавляем этот код (объяснения там же):

import android.app.Activity;
import android.os.Bundle;
import android.content.SharedPreferences;
import android.widget.EditText;
import android.widget.Button;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

 //Объявляем используемые объекты:
 EditText mEdit1,mEdit2;
 Button save_button, load_button;
 SharedPreferences mSharedPref;

 //Парочка строковых ресурсов, для сохранения двух текстовых значений:
 final String USERNAME = "Сохраненное имя";
 final String PASSWORD = "Сохраненный пароль";

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 //Связываемся с нашими элементам интерфейса
 mEdit1 = (EditText) findViewById(R.id.et1);
 mEdit2 = (EditText) findViewById(R.id.et2);
 save_button = (Button) findViewById(R.id.button1);
 load_button = (Button) findViewById(R.id.button2);
 }

 //Обрабатываем нажатие кнопки "Сохранить":
 public void save(View view) {

 //Создаем экземпляр для хранения данных SharedPreferences, выставляем доступ MODE_PRIVATE:
 mSharedPref = getPreferences(MODE_PRIVATE);

 //Создаем объект Editor для создания пар имя-значение:
 SharedPreferences.Editor mEditor = mSharedPref.edit();

 //Сохраняем введенные символы в поля ввода, задавая имена USERNAME,
 //PASSWORD и соответствующие им значения, получаемые из полей ввода:
 mEditor.putString(USERNAME, mEdit1.getText().toString());
 mEditor.putString(PASSWORD, mEdit2.getText().toString());
 
 //Совершаем сохранение того, что мы тут наворотили:
 mEditor.commit();
 
 //Показываем Toast сообщение о том, что дело сделано:
 Toast.makeText(this, "Данные сохранены", Toast.LENGTH_SHORT).show();
 }

 //Обрабатываем нажатие кнопки "Загрузить":
 public void load(View view) {

 //Используем созданный файл данных SharedPreferences:
 mSharedPref = getPreferences(MODE_PRIVATE);
 
 //Создаем 2 строковых объекта, берем для них значение из сохраненных данных:
 String saved_name = mSharedPref.getString(USERNAME, "");
 String saved_pass = mSharedPref.getString(PASSWORD, "");
 
 //Присваиваем вытащенные значения полям ввода:
 mEdit1.setText(saved_name);
 mEdit2.setText(saved_pass);

 //Показываем Toast сообщение о том, что дело сделано:
 Toast.makeText(this, "Данные загружены", Toast.LENGTH_SHORT).show();
 }
}

Как видите, при сохранении и загрузке сохраненных данных будет высвечиваться Toast сообщение с информацией о выполненной операции.

Теперь осталось только протестировать наше приложение:

работает

Похоже на чудо, но оно работает!

Таким образом, в этом уроке мы научились как в Android программировании выполнять сохранение данных приложения с помощью стандартного интерфейса под названием Shared Preferences. Надеюсь у вас все получилось, удачи в начинаниях.

Также можете переходить к изучению SQLite Database.

Категория: Уроки программирования | Просмотров: 1493 | Добавил: Oleg | Теги: Shared Preferences, сохраняем данные Android приложения, настройки приложения | Рейтинг: 5.0/1
Всего комментариев: 0
avatar