如何在屏幕旋转时保留Presenter的嵌套片段实例

时间:2016-05-16 18:04:29

标签: android android-fragments mosby

当我开始使用ViewPager时,我遇到了这个问题。由于每个页面都是嵌套的 Fragment,我无法为其调用setRetainInstance(true)。因此,我需要将Fragment的状态存储到Bundle并取消/调用我不想要的远程API方法onViewAttached/Detached

我了解这种情况:

  1. 我可以使用RecyclerViewPager 来避免使用嵌套的Fragments,但我仍然无法保留Presenter的实例。其中一种方法是使用静态字段,但我可以使用Fragment做同样的事情。
  2. 在MainActivity下创建某种rootViewPager ,并通过FragmentssetVisibility(GONE/VISIBLE)中使用并替换Adapter。因此,置于此Fragment中的每个ViewPager都不会有父Fragment,我将解决我的问题。合适而优雅,但不是我想的最佳解决方案。
  3. 还有其他变种吗?

1 个答案:

答案 0 :(得分:1)

在Mosby 3.0中,即使没有setRetainInstance(true),也可以保留演示者...我建议等到3.0发布......

  

所以,我需要将Fragment的状态存储到Bundle并取消/回忆   onViewAttached / Detached的远程API方法,我不想这样做。

Mosby 2.0完全适合您,但您必须使您的ViewState和您的数据实现Parcelable。在这种情况下,演示者实例将无法在屏幕方向更改后继续存在,但是演示者将在相同的状态/点上“恢复”(将创建新的演示者实例,异步任务等也可能重新启动)。请参阅RestorableViewState(javadoc稍微过时了,因为它提到这是处理自Mosby 2.0不再适用的活动的唯一方法)