从另一个活动导航回来时,可以保留子片段的状态吗?

时间:2013-12-04 21:27:50

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

我有一个托管片段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();

2 个答案:

答案 0 :(得分:0)

在不查看代码的情况下,您需要使用getChildFragmentManager()代替getFragmentManager()吗?

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

  

返回一个私有的FragmentManager,用于放置和管理此片段内的片段。

答案 1 :(得分:0)

在阅读Mike的评论之后,我正在使用子片段管理器,但是当我将其切换到正常的片段管理器时,它现在似乎正常工作。看似奇怪的行为,但现在都很好。