Как сохранить текст EditText при изменении ориентации?

Хотя концепция очень проста, мне кажется, что у меня возникают трудности с сохранением текстового значения TextEdit при изменении ориентации устройства. Когда я меняю ориентацию, текст внутри моего EditText стирается.

Иерархия представлений выглядит следующим образом:

Activity
    View Pager
        Fragment
            Recycler View
                View Holder
                    Edit Text
  • Я попытался установить freezesText в true в макете xml для EditText безрезультатно.

  • Во фрагменте я пытался сохранить текст в onSaveInstanceState() и восстановить в onActivityCreated(), но похоже, что onSaveInstanceState() никогда не вызывался.

  • В действии я попытался сохранить текст в onSaveInstanceState() и восстановить в onCreate(), но в этот момент EditText был нулевым.

  • Я попытался установить для saveEnabled значение true в макете xml для EditText, что также не сработало.

Что я делаю неправильно?


person Josue Espinosa    schedule 26.06.2017    source источник
comment
Вы установили идентификатор для своего EditText в xml? Что самое главное, что необходимо для сохранения текстов в EditText? Также ваш вопрос дублирует этот: stackoverflow.com/a/19234974/2557258   -  person Yazon2006    schedule 26.06.2017
comment
проверьте этот stackoverflow.com/questions/12214600/   -  person Pavan    schedule 26.06.2017
comment
Да, у EditText есть набор идентификаторов   -  person Josue Espinosa    schedule 26.06.2017
comment
@JosueEspinosa Похоже, ты делаешь что-то не так. Может быть, вы устанавливаете новый адаптер для повторного использования каждый раз при создании? Вам будет легче помочь, если вы покажете свой полный код фрагмента.   -  person Yazon2006    schedule 26.06.2017
comment
@Yazon2006 Yazon2006 Иерархия представлений довольно сложная, вскоре я добавлю более подходящий код.   -  person Josue Espinosa    schedule 26.06.2017
comment
@Yazon2006 Yazon2006 Да, я думаю, что это может быть основной проблемой. В моем фрагменте в onActivityCreated() я создаю RecyclerView и устанавливаю адаптер. Разве это не так?   -  person Josue Espinosa    schedule 26.06.2017
comment
@JosueEspinosa, если вы создали новый экземпляр адаптера - вот в чем дело. Старайтесь создавать его только в том случае, если он нулевой, чтобы избежать ненужного пересоздания адаптера. Все равно не могу сказать точно...   -  person Yazon2006    schedule 26.06.2017
comment
Хм, упаковка установки в if (mAdapter == null) по-прежнему не решает проблему.   -  person Josue Espinosa    schedule 26.06.2017
comment
поделитесь кодом для этого.   -  person Nishant Bhakta    schedule 26.06.2017
comment
вы должны использовать protected void onRestoreInstanceState (Bundle saveInstanceState) { super.onRestoreInstanceState (savedInstanceState); } Это вернет вам пакет, который вы сохранили в защищенном пустом месте onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); }   -  person Sarthak Gandhi    schedule 26.06.2017


Ответы (2)


Попробуйте объявить saveEnabled = "true" в вашем editText внутри макета xml

person Tuby    schedule 26.06.2017

поместите это в свой фрагмент onCreate()

setRetainInstance(boolean)

Подробнее об этом читайте здесь с полным примером кода.

person Tord Larsen    schedule 26.06.2017