#java #android #activity #activity_life_cycle #android_shared_preferences
Возможно ли в Android сохранить разметку с значениями в файл, чтобы после можно было её из этого файла потом загрузить? Допустим, у меня есть main.xml, там 2 Button и 20 TextView. Для каждого TextView я программно написал текст (каждый текст около 20 слов). Можно ли как-нибудь сохранить это всё и запустить в новом Activity? Просто такой же эффект возникает при повороте экрана, эти два метода уже не работают. (( onRetainNonConfigurationInstance() getLastNonConfigurationInstance()
Ответы
Ответ 1
Если я правильно понял, вам надо куда-то сохранить строки из 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");
Комментариев нет:
Отправить комментарий