我终于在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();
}
}
活动实例中的这种不一致显然导致我的片段存在多个问题(与服务,广播接收器等绑定)。 我可能做错了,因为我不认为这是嵌套片段的正确行为。
这样:
我做错了代码吗? 这是嵌套片段的预期行为吗?
我错过了什么吗? 我应该自己分开/附上吗?
由于
答案 0 :(得分:1)
我发现这是问题所在,我在父片段中使用了setRetainInstance(true)并且保留了子片段的分离。
删除该行后,一切按预期工作