如何在 Fragments 中正确使用 Fragments?
我的(简化的)用例如下,我有一个带有布局片段的活动,这个片段本身包含一个子片段......所有片段都手动添加到它们的父母......
----------------------------------------------------------
- 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
我得到/创建了我的子片段:
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 被添加了两次......如果我使用活动,FragmentManager
那么它可以工作......但是为什么它不能与ChildFragmentManager
? 当然,Fragment 是一个新的 Fragment,但 Activity 也是一个新的 Fragment,那么为什么它可以与 Activity 一起使用,FragmentManager
而不能与父 Fragment 一起使用呢?
在片段中,我应该使用片段ChildFragmentManager
,不是吗?