У меня есть фрагмент с несколькими видами. Два из них являются обычными: назовем их FrameLayoutA
и FrameLayoutB
. Проблема в том, что FrameLayoutB
не сохраняет состояние, когда возвращаюсь к фрагменту.Сохранение состояния нескольких видов во фрагменте
Там нет onSaveInstanceState
/onRestoreInstanceState
/setRetainInstance
/onRetainNonConfigurationInstance
/getLastNonConfigurationInstance
метод называется/перегружен, ни в FrameLayoutA
/FrameLayoutB
классов, ни в классе фрагмента.
Невозможно найти причину, по которой состояние одного вида сохраняется, а другое - нет. Есть идеи? Я что-то упускаю?
UPDATE:
Остановился отладчик на onCreateView()
и, видимо, мое восстановленное значение в inflater
->mChildFragment
->mSavedViewState
. inflater
имеет тип org.holoeverywhere.LayoutInflater
. Все еще ищете ответ, почему некоторые взгляды сохранены, но не другие.
UPDATE:
Итак, есть два мои пользовательские представления, который завышенные же расположение внутри них. В макете есть EditTexts с объявленными идентификаторами. Таким образом, View.dispatchRestoreInstanceState()
восстанавливает значения в обоих представлениях из значений во втором представлении. Поэтому, когда я возвращаюсь к фрагменту, оба моих пользовательских представления имеют одинаковые значения.
Убедитесь Идентификаторы ваши показам s уникальны, может быть, у вас есть те же идентификаторы и вид могут перезаписывать ранее сохраненные значения. – marcinj
Идентификаторы разные. – ViliusK
Отладка далее и заметила, что эти значения сохраняются в 'inflater'. Обновление вопроса. – ViliusK