Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 莫斯比MVP-如何重新创建片段';onDestroyView()之后的状态?_Android_Android Fragments_Mvp_Mosby_Android Mvp - Fatal编程技术网

Android 莫斯比MVP-如何重新创建片段';onDestroyView()之后的状态?

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架

我正在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在上面做了一些额外的事情。。。我会看一看。。。