我正在Android应用中使用Mosby模型 - 视图 - 展示器库。在一个特定视图中,我使用Bottom Navigation实现了Design Support Library v25.1.0。我在一个Activity中切换3个片段。为了处理旋转配置更改,我使用的是Mosby的自定义RestorableViewState。
我遇到的问题是,Mosby将View的状态存储在Activity的onSaveInstanceState(Bundle bundle)中,当我在同一个活动中交换片段时,不会调用它,只调用Fragment的onDestroyView()。目前我将状态分别存储在Fragment本身中(因为片段在切换片段期间不会被破坏,只是Fragment的视图)但是我有冗余代码,这有点违背了使用MVP架构的目的。
在方向更改和交换片段期间,是否有更优雅的解决方案来存储Fragment的状态?
答案 0 :(得分:1)
这有点棘手。我猜你正在使用replace()
进行FragmentTransaction,不是吗?问题是,使用replace,你每次都在创建一个新的Fragment实例。因此,没有可以恢复的状态。您应该致电FragmentTransaction.show(fragment)
和FragmentTransaction.hide(fragment)
。
同样,Mosby 2对这个用例没有完美的支持,Mosby 3将有更好的支持。