配置更改后具有错误活动引用的嵌套片段

Mar*_*nci 5 android android-fragments android-fragmentactivity android-support-library

我终于在支持库 修订版11中查看新的嵌套片段API .

一切都很顺利,直到我尝试使用嵌套片段所持有的活动引用.配置更改后,childFragment似乎没有分离并重新附加到新活动.

基本上在方向更改后,我的childFragment处于一个不一致的状态,我无法使用getActivity()从中获取正确的活动实例.

我使用getParentFragment(). getActivity()来获取正确的一个并且它可以工作,但我不认为这是正确的方法.

这是我第一次在parentFragment中添加片段的代码,之后片段自动添加回parentFragment:

        public void addChildFragment() {
            Fragment f = getFragment().getChildFragmentManager().findFragmentByTag( FRAGMENT_CHILD_TAG );
            if (f == null) {
                FragmentTransaction ft = getFragment().getChildFragmentManager().beginTransaction();

                f = new TrackBrowserFragment();
                f.setArguments( getFragment().getArguments() );

                ft.add( R.id.fragment_album_detail_child_fragment_layout, f , FRAGMENT_CHILD_TAG );
                ft.commit();
            }
        }
Run Code Online (Sandbox Code Playgroud)

活动实例中的这种不一致显然导致了我的片段的多个问题(与服务,广播接收器等绑定).我可能做错了,因为我不认为这是嵌套片段的正确行为.

所以:

我做错了代码吗?这是嵌套片段的预期行为吗?

我错过了什么吗?我应该自己拆卸/贴上它吗?

谢谢

Mar*_*nci 1

我发现这就是问题所在,我在父片段中使用 setRetainInstance(true) ,这使得子片段保持分离。

删除该行后,一切都按预期进行