Mosby MVP - 如何在 onDestroyView() 之后重新创建 Fragment 的状态?

Mosby MVP - how to recreate Fragment's state after onDestroyView()?

我正在使用 Mosby Model-View-Presenter library in an Android app. In one particular view I'm using Bottom Navigation implemented with Design Support Library v25.1.0. I'm switching between 3 fragments in an Activity. For handling rotation configuration change I'm using Mosby's custom RestorableViewState

我遇到的问题是 Mosby 将视图的状态存储在 Activity 的 onSaveInstanceState(Bundle bundle) 中,当我在同一个 activity 中交换片段时不会调用它,只有片段的 onDestroyView( ) 正在被调用。目前我将状态单独存储在片段本身中(因为片段在切换片段时不会被破坏,只是片段的视图)但是我有冗余代码这有点违背了使用 MVP 架构的目的。

是否有更优雅的解决方案来在方向更改和交换片段期间存储片段的状态?

这有点棘手。我猜你正在用 replace() 进行 FragmentTransaction 是吗?问题是,使用 replace 时,您实际上每次都在创建一个新的 Fragment 实例。因此没有可以恢复的状态。您应该调用 FragmentTransaction.show(fragment)FragmentTransaction.hide(fragment).

此外,Mosby 2 对这个用例没有完美的支持,Mosby 3 将对此提供更好的支持。