且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何防止使用导航控制器按“后退"按钮后显示先前的片段?

更新时间:2023-12-02 23:31:52

Navigation提供了popUpTopopUpToInclusive属性,以作为navigate()操作的一部分从后堆栈中删除片段.

Navigation offers a popUpTo and popUpToInclusive attributes for removing fragments from the back stack as part of a navigate() operation.

这可以用XML设置:

<!-- Add to your Navigation XML, then use navigate(R.id.go_home) -->
<action
  android:id="@+id/go_home"
  app:destination="@+id/home_fragment"
  app:popUpTo="@+id/destination_to_pop"
  app:popUpToInclusive="true"/>

或通过编程设置它:

NavOptions navOptions = new NavOptions.Builder()
    .setPopUpTo(R.id.destination_to_pop, true)
    .build();
Navigation.findNavController(view).navigate(homeDestination, navOptions)

您还可以使用<navigation>元素的ID.

You can also use the id of a <navigation> element as well.