繁体   English   中英

如何使用导航组件清除返回堆栈中的每个片段(例如,当 HTTP 401 触发时)并发送到登录片段

[英]How can I clear every fragments in back stack using Navigation Component (for example when HTTP 401 triggeres) and sent to login fragment

我们有下一个属性可以在打开另一个片段时删除片段/片段。

app:popUpTo="..."
app:popUpToInclusive="true"

但是,如果我需要清除所有返回堆栈而不知道哪个 id 是第一个(并且起始目的地可能已经从堆栈中删除),例如 401 事件。

我该怎么做?

例如,我可能在后台堆栈中有 5 个片段,但我不知道第一个片段的 id,如何将它们全部删除并打开登录片段?

我实现了这个解决方案,虽然它看起来很困难

navController.graph = navController.graph.apply {
    startDestination = R.id.loginFragment
}
val navOptions = NavOptions.Builder()
    .setPopUpTo(R.id.loginFragment, true)
    .build()
navController.navigate(R.id.loginFragment, null, navOptions)

但它会清除所有返回堆栈,堆栈中只有一个 loginFragment

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM