首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正确使用(子)FragmentManager的子子片段

正确使用(子)FragmentManager的子子片段
EN

Stack Overflow用户
提问于 2013-12-19 16:28:14
回答 1查看 25.7K关注 0票数 23

如何在片段中正确使用片段?

我的(简化的)用例如下,我有一个带有布局片段的活动,这个片段本身包含一个子片段……所有的片段都会被手动添加到它们的父级...

代码语言:javascript
复制
----------------------------------------------------------
- Activity                                               -
-                                                        -
-                                                        -
-     ---------------------------------------            -
-     - Fragment                            -            -
-     -                                     -            -
-     -    -----------------                -            -
-     -    - SubFragment   -                -            -
-     -    -               -                -            -
-     -    -               -                -            -
-     -    -----------------                -            -
-     ---------------------------------------            -
-                                                        -
----------------------------------------------------------

现在,在我的活动的onCreate中,我执行以下操作:

代码语言:javascript
复制
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:

代码语言:javascript
复制
mSubFragment = getChildFragmentManager().findFragmentByTag(SubFragment.class.getName());
if (mSubFragment == null)
{
    mSubFragment = new SubFragment();
    getChildFragmentManager().beginTransaction().add(R.id.fragment_sub, mSubFragment, SubFragment.class.getName()).commit();
}

Problem

屏幕旋转后,我的SubFragment被添加了两次...如果我使用活动的FragmentManager,那么它就可以工作...但是为什么它不能与ChildFragmentManager一起工作呢?当然,片段是一个新片段,但是活动也是一个新片段,那么为什么它可以使用活动的FragmentManager,而不能使用父片段的呢?

在片段中,我应该使用片段ChildFragmentManager,不是吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20676690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档