当前位置: 首页 > 知识库问答 >
问题:

如何用新的导航架构组件禁用导航中的某些片段?

公孙棋
2023-03-14
    null

调用navigate(r.id.action_xxx)之前和之后,我尝试了popbackstack,但都不起作用(这是有意义的:在它没有要弹出的内容之前;在它只关闭刚刚添加的片段之后)。这是否意味着唯一的方法是重写onbackpress来拦截它,并确保navigateup在这些情况下不会被调用?

谢了!

共有1个答案

梁丘书
2023-03-14

首先,向action标记添加属性app:popupto='your_nav_graph_id'app:popuptoinclusive=“true”

<fragment
    android:id="@+id/signInFragment"
    android:name="com.glee.incog2.android.fragment.SignInFragment"
    android:label="fragment_sign_in"
    tools:layout="@layout/fragment_sign_in" >
    <action
        android:id="@+id/action_signInFragment_to_usersFragment"
        app:destination="@id/usersFragment"
        app:launchSingleTop="true"
        app:popUpTo="@+id/main_nav_graph"
        app:popUpToInclusive="true" />
</fragment>

其次,使用上述操作作为参数导航到目标。

findNavController(fragment).navigate(SignInFragmentDirections.actionSignInFragmentToUserNameFragment())

注意:如果使用方法navigate(@idres int resId)进行导航,则不会得到所需的结果。因此,我使用了方法navigate(@nonnull NavDirections directions)

 类似资料:
  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • 是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。

  • 我正在使用BottomSheetDialogFraenge显示几个自定义设置的。 要求: 当我点击任何选项卡在BottomSheetDialogFraance我替换的片段,并将其添加到backstack,以便当用户点击的onBackPress或向上的行动,它应该回到最后设置的BottomSheetDialogFraank的片段。 我想使用导航架构组件来简化我的事务。 问题:如果我使用导航架构组件从

  • 我一直在遵循导航架构组件中的文档,以了解这个新的导航系统是如何工作的。 要从一个屏幕到另一个屏幕进行/返回,您需要一个实现接口的组件。 NavHost是一个空视图,当用户在应用程序中导航时,目的地会随之交换。 但是,似乎目前只有片段实现了< code>NavHost 导航架构组件的默认NavHost实现是NavHostFragment。 所以,我的问题是: > < li> 即使我有一个可以用< c

  • 我正在我的应用程序中使用导航组件。我试图在单击操作栏图标时导航到片段,但它不起作用。以下是我的代码: 操作菜单。xml nav_主机。xml 主要活动。Java语言 这种方法不起作用-我如何导航?