如何正确地在片段中使用片段?
我的(简化的)用例是这样的,我有一个带有布局片段的活动,该片段本身包含一个子片段...所有片段都手动添加到其父级中...
----------------------------------------------------------
- Activity -
- -
- -
- --------------------------------------- -
- - Fragment - -
- - - -
- - ----------------- - -
- - - SubFragment - - -
- - - - - -
- - - - - -
- - ----------------- - -
- --------------------------------------- -
- -
----------------------------------------------------------
现在在我的活动的
onCreate
中,我做以下操作:if (savedInstanceState == null)
{
// I create the fragment
mMainFragment = new MainFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_main, mMainFragment);
transaction.commit();
}
else
{
// I retrieve the fragment
mMainFragment = (BaseFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_main);
}
在我的onCreate
代码片段中,我获取/创建了我的SubFragment:
mSubFragment = getChildFragmentManager().findFragmentByTag(SubFragment.class.getName());
if (mSubFragment == null)
{
mSubFragment = new SubFragment();
getChildFragmentManager().beginTransaction().add(R.id.fragment_sub, mSubFragment, SubFragment.class.getName()).commit();
}
问题
屏幕旋转后,我的子片段(SubFragment)会被添加两次…… 如果我使用活动(Activity)的FragmentManager
,那么它会起作用…… 但是为什么使用ChildFragmentManager
就不起作用呢? 当然,该片段(Fragment)是一个新片段,但活动(Activity)也是一个新的,所以为什么使用活动的FragmentManager
可以正常工作,而使用父片段(Parent Fragment)的就不行呢?
在片段中,我应该使用片段的ChildFragmentManager
,对吗?