如何在android中保存/恢复嵌套片段?

时间:2014-06-17 09:34:35

标签: android android-fragments

我的主要活动的布局文件包含一个我正在加载的文件 片段使用NavigationDrawer进行动态分割。 要实现这一点,我使用FragmentPagerAdapter:

@Override
public Fragment getItem(int index) {

    switch (index) {
    case 0:
        return new FragmentA();
    case 1:
        return new FragmentB();
    case 2:
        return new FragmentC();
    }

    return null;
}

在FragmentA中有一个ViewPager +另一个FragmentPagerAdapter,所以你可以滑动 三个其他片段之间。 (Frament1,Fragment2,Fragment3)。 它的工作原理如下:

(由于缺乏声誉,我无法插入图片......)

http://62.165.232.86:1991/images/fragments.png

当我在Frament1,Fragment2和Fragment3之间切换时,它工作正常。 (我将ViewPager的offScreenPageLimit设置得足够高。)

当我导航到FragmentB或FragmentC然后FragmentA被破坏并且我不知道如何保存它的实例并恢复它时出现问题,因为我没有 对Fragment1的引用。

编辑1: 我像这样在FragmentA和FragmentB之间交换:

    FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
    tx.replace(R.id.main, mAdapter.getItem(0));
    tx.commit();
我有点困惑。我应该保存Fragment1,2,3和Fragment A的实例, 当我导航回Fragment A但我不知道怎么回事,因为我没有引用子片段。

你能帮助我吗?

感谢您的回答, Daneel Olivaw

1 个答案:

答案 0 :(得分:0)

想法(我不确定100%):

Fragment fragment = getFragmentManager().findFragmentByTag("yourtag");
if (fragment==null) {
   fragment = mAdapter.getItem(0)   
}  
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.add(R.id.main, fragment, "yourtag");
tx.commit();