【问题标题】:How to keep Presenter's instance of nested Fragment while screen rotation如何在屏幕旋转时保留 Presenter 的嵌套片段实例
【发布时间】:2016-05-16 18:04:28
【问题描述】:

当我开始使用ViewPager 时,我遇到了这个问题。由于每个页面都嵌套Fragment,我不能为此调用setRetainInstance(true)。所以,我需要将Fragment 的状态存储到Bundle 并取消/调用我不想这样做的远程API 方法onViewAttached/Detached

我对这种情况的了解:

  1. 我可以使用RecyclerViewPager来避免使用嵌套的Fragments,但我仍然无法保留Presenter的实例。其中一种方法是使用静态字段,但我可以使用 Fragment 做同样的事情。
  2. 在 MainActivity 下创建某种rootViewPager 并通过setVisibility(GONE/VISIBLE)Fragments 中使用它并替换Adapter。因此,放入此ViewPager 的每个Fragment 都不会有父Fragment,我会解决我的问题。合适且优雅,但不是我认为的最佳解决方案。

还有其他变种吗?

【问题讨论】:

    标签: android android-fragments mosby


    【解决方案1】:

    在 Mosby 3.0 中,即使没有 setRetainInstance(true),也可以保留演示者...我建议等到 3.0 发布...

    所以,我需要将 Fragment 的状态存储到 Bundle 并取消/召回 我不想使用的远程 API 方法 onViewAttached/Detached。

    Mosby 2.0 完全可以为您做到这一点,但您必须让您的 ViewState 和您的数据实现 Parcelable。在这种情况下,演示者实例将无法在屏幕方向更改后继续存在,但演示者将在相同的状态/点上“恢复”(将创建一个新的演示者实例,异步任务等也可能重新启动)。请参阅RestorableViewState(javadoc 有点过时,因为它提到这是处理活动的唯一方法,因为 Mosby 2.0 不再适用)

    【讨论】:

    • 我知道 RestorableViewState。我不想以这种方式保存状态,因为我已经使用 setRetainInstance(true) 在片段上构建了我的应用程序的整个架构。
    • Mosby 3 什么时候可以发布?
    • 可能6月底,不保留Fragments的快照可能会更早推出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多