Как сохранить экземпляр Presenter вложенного фрагмента при повороте экрана
Я столкнулся с этой проблемой, когда я начал использовать ViewPager
, Поскольку каждая страница является вложенной Fragment
Я не могу позвонить setRetainInstance(true)
для этого. Итак, мне нужно хранить Fragment
состояние к Bundle
и отменить / вызвать удаленные методы API onViewAttached/Detached
что я не хочу.
Что я узнаю об этой ситуации:
- я могу использовать
RecyclerViewPager
избегать использования вложенныхFragments
, но я до сих пор не могу сохранить примерPresenter
, Одним из способов является использование статического поля, но то же самое можно сделать сFragment
, - Создать какой-то
rootViewPager
под MainActivity и использовать его вFragments
с помощьюsetVisibility(GONE/VISIBLE)
и заменаAdapter
, Итак, каждыйFragment
помещены в этоViewPager
не будет родителяFragment
и я решу свое дело. Подходит и элегантно, но не лучшее решение, как мне кажется.
Есть еще варианты?
1 ответ
В Mosby 3.0 ведущие могут быть сохранены даже без setRetainInstance(true)
... я бы предложил подождать до 3.0 релиза...
Итак, мне нужно сохранить состояние фрагмента в Bundle и отменить / отозвать удаленные методы API onViewAttached/Detached, чего я не хочу.
Mosby 2.0 делает именно это для вас, но вы должны сделать так, чтобы ваш ViewState и ваши данные реализовали Parcelable. В этом случае экземпляр презентатора не выдержит изменения ориентации экрана, но презентатор "возобновит" в том же состоянии / точке (будет создан новый экземпляр презентатора, могут также быть перезапущены асинхронные задачи и т. Д.). См. RestorableViewState (javadoc немного устарел, поскольку упоминает, что это единственный способ работать с действиями, которые, поскольку Mosby 2.0 больше не соответствует действительности)