0

我有 3 个片段(主要、关于和帮助)我有一个带有 3 个选项的菜单(“显示主要片段”、“显示关于片段”和“显示帮助片段”)

当我选择 3 个菜单选项之一时,我会:

    Fragment fragment = null;

    switch (position) {

        case 1:
            fragment = new MainFragment();
            break;              
        case 3:
            fragment = new HelpFragment();
            break;
        case 4:
            fragment = new AboutFragment();
            break;

        default:
            break;
    }
    FragmentManager fragmentManager = getSupportFragmentManager();

    FragmentTransaction ft = fragmentManager.beginTransaction();

    ft.replace(R.id.content_frame, fragment);

    ft.addToBackStack(null);

    ft.commit();

如果我添加 2、3 或更多不同的片段,它可以正常工作。

但是如果我连续添加相同的片段,当我单击后退按钮时,它会显示相同的片段,而不是之前添加的片段。

让我解释得更好。

  1. 点击“显示关于片段”
  2. AboutFragment 添加到 MainLayout
  3. AboutFragment 显示在屏幕上
  4. 点击“显示主片段”
  5. MainFragment 添加到 MainLayout
  6. MainFragment 显示在屏幕上
  7. 单击“显示主要片段”(再次)
  8. MainFragment 被添加到 MainLayout(再次)
  9. MainFragment 再次显示在屏幕上
  10. 单击返回按钮
  11. MainFragment 显示在屏幕上!

当我点击后退按钮(第 10 步)时,我想显示 AboutFragment。但它再次向我展示了 MainFragment。是这样吗?还是我做错了什么?我之前需要打一个 popBackStack() 电话吗?

谢谢和对不起我的英语

4

1 回答 1

0

按照你的步骤,你添加了MainFragment两次,所以在第 10 步中点击后退按钮后它当然会再次显示,MainFragment后退堆栈中还有另一个。

如果您不想再次显示 MainFragment,请不要再次将其添加ManiFragment到 backstack,那么您最终将回到AboutFragment

于 2013-11-12T19:32:23.777 回答