Сохранение состояния
При запуске приложения иногда требуется загрузка настроек, сделанных во время предыдущей работы программы. Самым простым способом хранения настроек является хранение данных в виде xmlфайлов. Файл xmlможет располагаться в папке res/values/. Рассмотрим пример чтения настроек-ресурсов из файла.
Содержимое файла res/values/settings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="abc">Hello world</string>
<item format="integer" name="n" type="integer">12345</item>
</resources>
Ниже приводится исходный код части программы, запускающийся при вначале работы приложения.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_save_xml);
EditText loginEdit = (EditText)findViewById(R.id.editText1);
int i;
i=getResources().getInteger(R.integer.n);
loginEdit.setText(String.valueOf(i));
}
Текстовое поле loginEditзагружает из файла xmlзначение элемента nпри помощи функции getResources(). Таким образом, настройки задаются на стадии компиляции программы и могут быть считаны приложением во время его работы.
Настройки могут также создаваться во время работы приложения и быть доступными для изменений. В таком случае доступ к настройкам должен быть только из программы (а не на стадии компиляции через редактор). Рассмотримследующийпример.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_save_xml);
EditText loginEdit = (EditText)findViewById(R.id.editText1);
// загружаемнастройки
SharedPreferences settings=getPreferences(0);
String login=settings.getString(“Login”,””);
// вставляем в текстовое поле загруженные настройки
loginEdit.setText(login);
}
@Override
protected void onStop() {
super.onStop();
EditText loginEdit = (EditText)findViewById(R.id.editText1);
//получаем содержимое текстового поля
Stringlogin=loginEdit.getText();
// загружаемредакторнастроек
SharedPreferences settings=getPreferences(0);
SharedPreferences.Editor editor=settings.edit();
//записывем в редактор настройки
editor.putString(“Login”,login);
// сохраняем данные из редактора
editor.commit();
}
В данном примере в качестве настройки используется строка Login. Она загружается при запуске программы и сохраняется при завершении работы приложения. Доступ к таким настройкам не может быть осуществлен на стадии компиляции через редактор.
Вопросы для самопроверки