代码之家  ›  专栏  ›  技术社区  ›  igor_rb

禁用在导航体系结构组件中向backstack添加片段

  •  3
  • igor_rb  · 技术社区  · 6 年前

    ... -> A -> C -> X    and ... -> B -> C -> X
    

    但当我在X片段中时 mNavController.navigateUp() 我想跳过片段C,转到片段A或B。我需要做什么?

    https://developer.android.com/topic/libraries/architecture/navigation/ 谢谢!

    3 回复  |  直到 6 年前
        1
  •  21
  •   Reaz Murshed vir us    5 年前

    鉴于 R.id.fragmentC 是C目的地的名称,从X目的地,可以执行以下操作:

    NavController controller = Navigation.findNavController(view);
    controller.popBackStack(R.id.fragmentC, true);
    

        2
  •  18
  •   Viacheslav    5 年前

    或者你可以用 app:popUpTo app:popUpToInclusive 导航中的属性 xml 当执行某些事务时,自动清除回栈的资源,所以back/up按钮将把用户带到根片段。

    <fragment
        android:id="@+id/fragment1"
        android:name="com.package.Fragment1"
        android:label="Fragment 1">
    
        <action
            android:id="@+id/action_fragment1_to_fragment2"
            app:destination="@id/fragment2"
            app:popUpTo="@id/fragment1"
            app:popUpToInclusive="true / false" />
    
    </fragment>
    
        3
  •  4
  •   Muhammad Maqsood    6 年前

    您还可以通过以下方式实现这一点:

    NavController controller = Navigation.findNavController(view);
    controller.popBackStack(R.id.fragmentA, false);
    

    或者

    NavController controller = Navigation.findNavController(view);
    controller.popBackStack(R.id.fragmentB, false);
    

    推荐文章