这个问题与 androidx.navigation 库特别相关。
我将我的主图分成 2 个图,因为我想要一个底部导航,上面有片段,另一个没有。我没有使用 <include...
,而是将活动添加到第一个图表中
<activity
android:id="@+id/Activity2"
android:name="com...Activity2"
android:label="Activity2" />
这一切都很好,但我在第一个图中还有一个启动画面,用于检查用户是否已通过身份验证并将其直接导航到第二个图中。使用片段我可以只使用标准 popTo
和 popToInclusive
来管理片段后台堆栈,但我无法弄清楚如何使用两个活动来做到这一点,以便在启动第二个活动时first 被终止并从 backstack 中移除,因此用户无法向后导航。
目前我只是在发生导航的片段中处理它
navController
.navigate(R.id.action_someFragment_to_anotherFragment)
requireActivity().finish()
这有效,但它留下了出错的空间,如果可能,我想用导航库处理它。
答案 0 :(得分:1)
每个个体 NavController
彼此完全独立。虽然 <activity>
目的地允许您使用 navigate()
转到一个完全独立的活动(可能会或可能不会使用导航本身),但导航本身永远不会finish()
活动作为navigate()
调用,所以你需要自己做。
使用具有不同导航图的多个活动不是根据 Navigating Navigation talk 在导航中处理身份验证的推荐方法,并且这种方法在很多方面都失败了(例如深层链接和失效在过程死亡/娱乐之后),guide for handling login 正确处理了。使用一个 NavController 和 ability to listen for navigation events 时,您不会遇到这些问题。