Как сохранить экземпляр Presenter вложенного фрагмента при повороте экрана

Я столкнулся с этой проблемой, когда я начал использовать ViewPager, Поскольку каждая страница является вложенной Fragment Я не могу позвонить setRetainInstance(true) для этого. Итак, мне нужно хранить Fragment состояние к Bundle и отменить / вызвать удаленные методы API onViewAttached/Detached что я не хочу.

Что я узнаю об этой ситуации:

  1. я могу использовать RecyclerViewPager избегать использования вложенных Fragments, но я до сих пор не могу сохранить пример Presenter, Одним из способов является использование статического поля, но то же самое можно сделать с Fragment,
  2. Создать какой-то 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 больше не соответствует действительности)

Другие вопросы по тегам