Страницы

Поиск по вопросам

четверг, 1 ноября 2018 г.

Сохранение и загрузка состояния Activity

Возможно ли в Android сохранить разметку с значениями в файл, чтобы после можно было её из этого файла потом загрузить?
Допустим, у меня есть main.xml, там 2 Button и 20 TextView. Для каждого TextView я программно написал текст (каждый текст около 20 слов).
Можно ли как-нибудь сохранить это всё и запустить в новом Activity? Просто такой же эффект возникает при повороте экрана, эти два метода уже не работают. ((
onRetainNonConfigurationInstance() getLastNonConfigurationInstance()


Ответ

Если я правильно понял, вам надо куда-то сохранить строки из TextView и восстановить их после поворота активити или передать в другую активити. Для этого есть класс Bundle
В него можно сохранить ваши строки, а потом извлечь.
Для сохранения в текущей активити используйте метод onSaveInstanceState(Bundle state) активити:
@Override public void onSaveInstanceState(Bundle state) { //находим TextView TextView tV=(TextView )this.findViewById(R.id.yours_text_view_id); String textFromTextViewToSave=tv.getText(); state.putString("str1", textFromTextViewToSave); } Для восстановления этого текста при повороте активити в onCreate пишем
@Override public void onCreate(Bundle state) { //находим TextView TextView tV=(TextView )this.findViewById(R.id.yours_text_view_id); String textFromTextViewToSave=state.getString("str1"); tV.setText(textFromTextViewToSave); } Для передачи этих значений в другую активити действуйте по аналогии, сохраняя строки из TextView в Bundle Intent-а, коим запускаете эту активити:
Intent intent=new Intent(context, YourAnoterActivity.class); intent.putStringExtra("str1", textFromTextViewToSave); context.startActivity(intent);
, а восстанавливая их в OnCreate этой активити так:
@Override public void onCreate(Bundle state) { String fromIntent=this.getIntent.getString("str1"); } Ещё можно сохранять в SharePreferences. Так вы не будете зависеть от жизненного цикла.
//сохраняем строку в файл внутренней директории приложения SharePreferences pref=PreferenceManager.getDefaultSharedPreferences(context); pref.edit().putString("key", "value").commit();
//получаем ранее сохранённые данные String savedData=pref.getString("key");

Комментариев нет:

Отправить комментарий