如何做到这一点,以便在登录片段后,可以再用后按钮将最后一个碎片导航到



我有类似的导航结构:

StaringFragment -> nestedNavGraph
                         |
                   HomeFragment -> SecondFragment

我需要做到这一点,以便用户从StartingFragment导航到nestedNavGraph后,用户无法再按下后按钮返回StartingFragment

我基本上正在执行权限检查,如果支票成功,我将使用此代码从StartingFragment导航到nestedNavGraph

findNavController(R.id.nav_host_frag).navigate(R.id.nestedNavGraph)

然后,在导航图编辑器中的StartingFrag -> nestedNavGraph之间的操作箭头上,我将popUpTo设置为HomeFragment,并包含true。我误解了文档吗?

我远离它后立即从背包中删除StartingFragment的正确方法是什么?

根据文档,将app:popUpTo设置为要弹出的目标 - 您不想弹出房屋范围,您想弹出起点,因此您应该设置app:popUpTo到起点的ID。

请注意,根据导航的原则,您应该始终具有固定的起始目的地 - 您不应使用有条件导航的起始目标 - 导航中的许多API,例如NavigationUi,假设您是正确的遵循导航的原则,图形的起始目的地保留在您的后堆上。

请记住,Android会在返回活动时恢复您的状态(包括您所在的片段((例如,用户手动撤销您所需的权限之后( - 您的片段本身(或活动,如果许可,则在整个应用程序中的每个屏幕上,实际上都是全球所需的(应该始终检查是否有许可 - 您不能依靠始终被称为开始。

我尚未使用nav lib,但是通过在文档中读取此部分,也许您只有一个错字,需要用popUpTo替换popTo

从一个目的地导航到另一个目的地时,请添加 app:popupto 属性到关联元素。 APP:Popupto 告诉导航库,将后面堆栈中的某些目的地弹出,作为呼叫navigate((的一部分。属性值是应保留在堆栈上的最新目的地的ID。

您还可以包括应用:Popuptoinclusive ='true 指出 App:Popupto 中指定的目标也应从后堆中删除。。P>

相关内容

  • 没有找到相关文章

最新更新