我终于在支持库 修订版 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();
}
}
活动实例中的这种不一致显然会导致我的片段出现多个问题(与服务、广播接收器等绑定)。我可能做错了什么,因为我认为这不是嵌套片段的正确行为。
所以:
我对代码做错了吗?这是嵌套片段的预期行为吗?
我错过了什么吗?我应该自己分离/连接它吗?
谢谢