【问题标题】:Possible to retain state of child fragment when navigating back from another activity?从另一个活动返回时可以保留子片段的状态吗?
【发布时间】:2013-12-04 21:27:49
【问题描述】:

我有一个承载片段 A 的活动。

当附加片段 A 时,我将子片段 B 或 C(取决于某些标志)添加到 A 片段中的容器中。

现在,如果我向前导航到一个新活动,然后单击后退按钮,片段 A 状态将完美保留,但子片段不会保留,并且在重新附加之前有一个短暂的暂停。

这两个子片段也各自持有列表视图,因此理想情况下我希望保留它们并在导航返回时保持它们的滚动位置。这可能吗?我在子片段上尝试了 setretaininstance(true) ,但这会引发异常。

一些代码:

 Fragment fluidLayoutFragment = FluidLayoutFragment.newInstance(userId);
 FragmentTransaction ft = getChildFragmentManager().beginTransaction();
 fluidLayoutFragment.setTargetFragment(this, 0);
 ft.replace(R.id.layout_container, fluidLayoutFragment).commit();

【问题讨论】:

    标签: android android-fragments android-navigation android-nested-fragment


    【解决方案1】:

    如果不查看您的代码,您是否需要使用getChildFragmentManager() 而不是getFragmentManager()

    来自文档:http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager()

    返回一个私有的 FragmentManager 用于在这个 Fragment 中放置和管理 Fragment。

    【讨论】:

    • 不确定你的问题出在哪里。我最近实现了一个Activity,它有一个ViewPager 和两个不同的Fragments。我没有保留该实例,它似乎运行良好。见这里:github.com/slidese/SGU/blob/master/src/se/slide/sgu/…
    • 再次感谢,实际上用视图寻呼机做了类似的事情,但没有它就无法做到,也许视图寻呼机正在做一些管理..
    【解决方案2】:

    阅读 Mike 的评论后,我使用的是子片段管理器,但当我将其切换到普通片段管理器时,它现在似乎可以工作了。看起来很奇怪,但现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多