Главная » Сохраняем настройки приложения с помощью 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. | |
|
Всего комментариев: 0 | |