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

时间:2013-01-22 17:31:31

标签: android android-fragments android-fragmentactivity android-support-library

我终于在support library修订版11中查看新的嵌套片段API。

Everything它工作得很好,直到我尝试使用嵌套片段所持有的活动引用。 配置更改后, 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();
            }
        }

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

这样:

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

我错过了什么吗? 我应该自己分开/附上吗?

由于

1 个答案:

答案 0 :(得分:1)

我发现这是问题所在,我在父片段中使用了setRetainInstance(true)并且保留了子片段的分离。

删除该行后,一切按预期工作