Android 莫斯比MVP-如何重新创建片段';onDestroyView()之后的状态?
我正在Android应用程序中使用模型视图演示器库。在我使用的一个特定视图中,实现了。我在一个活动的3个片段之间切换。对于处理旋转配置更改,我使用Mosby的自定义 我遇到的问题是,Mosby将视图的状态存储在活动的onSaveInstanceState(Bundle Bundle)中,当我交换同一活动中的片段时,不会调用该状态,只调用片段的onDestroyView()。目前我将状态单独存储在片段本身中(因为片段在切换片段时不会被破坏,只是片段的视图),但我有冗余代码,这有点违背了使用MVP架构的目的Android 莫斯比MVP-如何重新创建片段';onDestroyView()之后的状态?,android,android-fragments,mvp,mosby,android-mvp,Android,Android Fragments,Mvp,Mosby,Android Mvp,我正在Android应用程序中使用模型视图演示器库。在我使用的一个特定视图中,实现了。我在一个活动的3个片段之间切换。对于处理旋转配置更改,我使用Mosby的自定义 我遇到的问题是,Mosby将视图的状态存储在活动的onSaveInstanceState(Bundle Bundle)中,当我交换同一活动中的片段时,不会调用该状态,只调用片段的onDestroyView()。目前我将状态单独存储在片段本身中(因为片段在切换片段时不会被破坏,只是片段的视图),但我有冗余代码,这有点违背了使用MVP架
在改变方向和交换片段的过程中,有没有更优雅的解决方案来存储片段的状态?这有点棘手。我猜你是在用
replace()
做一笔零碎的交易,不是吗?问题是,使用replace时,您实际上每次都在创建一个新的片段实例,因此没有可以恢复的状态。您应该调用FragmentTransaction.show(fragment)
和FragmentTransaction.hide(fragment)
另外,Mosby 2对该用例没有完善的支持,Mosby 3将对此有更好的支持。感谢Hannes为该用例提供支持!是的,我现在正在使用replace,它还具有隐藏/显示片段的实现,但据我所知,它可能不是实现这种UI模式的最佳方式(最多五个视图可能会占用大量内存)。期待着我们莫斯比3号!莫斯比3也不能解决这个问题。无论何时调用
replace()
都会销毁前面的片段,并添加一个新的实例化片段。没有任何库/框架可以解决这个问题,因为您实际上是在创建一个具有全新状态和Presenter的新对象(片段)。为了100%清楚,我使用了这个库:-switchTab方法。它并没有破坏片段,只调用了onDestroyView()。哦,我将在本月底查看该库。也许这个库需要一些额外的步骤(或者额外的MosbyDelegate),因为FragmentManager默认的MosbyDelegate是泰勒的,但是FragNav在上面做了一些额外的事情。。。我会看一看。。。