1

假设我有片段的 A、B、C 和 D。片段之间的正常移动是 A -> B -> C -> D。现在假设我想从 A -> D 跳转,但我想从 D 跳转到 onBackPressed()能够分别导航回 C 和 B。有没有办法做到这一点?我正在尝试的代码是这样的,但它确实无法正常工作。

 public void showNestedFragment(LinkedList<Fragment> fragments, boolean allowBack)
 {

    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();


    if (allowBack == false) // pop all thats in the backstack
        getSupportFragmentManager()
                .popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

    for(Fragment fragment : fragments){
         fragmentTransaction.add(R.id.fragment, fragment);

          if (allowBack)
          {
               fragmentTransaction.addToBackStack(null);
          }

           try
           {
               fragmentTransaction.commit();
           }
          catch (IllegalStateException e)
           {
               e.printStackTrace();
           } 
    }
 }
4

1 回答 1

1

你有片段,所以你可以做任何你想做的事情。您应该按照这些步骤来实现这一点。

  • 首先声明清单中的所有片段,顺序为 A 比 B 比 C 比 D
  • 因此,您可以使用设置下一个片段的可见性的简单方法从 A>B>C>D 实现正常导航。
  • 当您想要从 A 直接导航到 D 时,只需隐藏 B 和 C 片段。
  • 当您想再次从 D>C>B>A 简单地可见 B 和 C 移动并再次遵循简单导航时。
于 2013-10-29T12:43:10.133 回答