当我开始使用ViewPager
时,我遇到了这个问题。由于每个页面都是嵌套的 Fragment
,我无法为其调用setRetainInstance(true)
。因此,我需要将Fragment
的状态存储到Bundle
并取消/调用我不想要的远程API方法onViewAttached/Detached
。
我了解这种情况:
RecyclerViewPager
来避免使用嵌套的Fragments
,但我仍然无法保留Presenter
的实例。其中一种方法是使用静态字段,但我可以使用Fragment
做同样的事情。rootViewPager
,并通过Fragments
在setVisibility(GONE/VISIBLE)
中使用并替换Adapter
。因此,置于此Fragment
中的每个ViewPager
都不会有父Fragment
,我将解决我的问题。合适而优雅,但不是我想的最佳解决方案。还有其他变种吗?
答案 0 :(得分:1)
在Mosby 3.0中,即使没有setRetainInstance(true)
,也可以保留演示者...我建议等到3.0发布......
所以,我需要将Fragment的状态存储到Bundle并取消/回忆 onViewAttached / Detached的远程API方法,我不想这样做。
Mosby 2.0完全适合您,但您必须使您的ViewState和您的数据实现Parcelable。在这种情况下,演示者实例将无法在屏幕方向更改后继续存在,但是演示者将在相同的状态/点上“恢复”(将创建新的演示者实例,异步任务等也可能重新启动)。请参阅RestorableViewState(javadoc稍微过时了,因为它提到这是处理自Mosby 2.0不再适用的活动的唯一方法)