5

我终于在支持库 修订版 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();
            }
        }

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

所以:

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

我错过了什么吗?我应该自己分离/连接它吗?

谢谢

4

1 回答 1

1

我发现问题出在哪里,我在父片段中使用 setRetainInstance(true) 并保持子片段被分离。

在我删除该行之后,一切都按预期工作

于 2014-07-15T15:18:14.390 回答