【问题标题】:Viewpager, fragment lifecycle on activity recreationViewpager,活动重新创建的片段生命周期
【发布时间】:2014-05-13 11:21:03
【问题描述】:

我有一个带有 ViewPager 实例的 FragmentActivity,该实例使用 FragmentPagerAdapter。我首先创建一个片段实例列表,然后将其传递给适配器,以便它可以为正确的页面返回正确的片段。

我现在的问题是如何处理 Activity 娱乐。假设应用程序停止,在后台销毁活动,然后恢复活动。 我知道在活动的 onCreate 中将首先根据它在包中传递的 FragmentState 实例重新创建片段。然后创建了一组其他的片段并传递给适配器,这当然不是我想要的。

这里的常见做法是什么?避免在 onCreate 方法中重新创建片段是否可以接受/可能?还是我应该尝试重用重新创建的片段并将它们传递给适配器?

【问题讨论】:

    标签: android android-fragments android-viewpager fragment


    【解决方案1】:

    让片段重新创建是一种常见的做法,但在特定情况下,您可能希望使用Fragment.setRetainInstance(),但一般来说,让用户界面重新创建是可以的。尝试使用它,或尝试防止在旋转时破坏活动可能会导致不良行为,有时会使应用程序过于复杂。

    这就是为什么理想情况下您将模型放在 UI 类(例如 Activity、Fragments)之外的原因,因为您可以轻松地重新创建之前的状态。

    【讨论】:

    • 好吧,听起来合乎逻辑。
    • 我仍然不确定的一件事是在这种情况下如何最好地从 ViewPager 外部访问 ViewPager 的片段。我们不能用 findFragmentById 或 findFragmentByTag 询问 FragmentManager,因为每个片段实例都是用 ViewPager 的 getItem() 主体中的 .newInstance() 方法创建的,并且没有标签或定义的 id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多