Android 导航:从 backStack 中删除 activity
Android Navigation: removing an activity from the backStack
这个问题专门与 androidx.navigation 库相关。
我将我的主要图表分成了 2 个图表,因为我想要一个带有底部导航,上面有片段,另一个没有。我没有使用 <include...
,而是将 activity 添加到第一张图
<activity
android:id="@+id/Activity2"
android:name="com...Activity2"
android:label="Activity2" />
这一切都很好,但我在第一个图中也有一个初始屏幕,用于检查用户是否已通过身份验证并将他们直接导航到第二个图中。对于一个片段,我可以只使用标准 popTo
和 popToInclusive
来管理片段后台堆栈,但我无法弄清楚如何通过两个活动来做到这一点,所以当第二个 activity 被启动,第一个被杀死并从后台堆栈中删除,因此用户无法向后导航。
目前我只是在导航发生的片段中处理它
navController
.navigate(R.id.action_someFragment_to_anotherFragment)
requireActivity().finish()
这行得通,但它留下了错误的余地,如果可能的话,我想用导航库来处理它。
每个人NavController
都是完全独立的。虽然 <activity>
目的地允许您使用 navigate()
前往完全独立的 activity(可能会或可能不会使用导航本身),但导航本身永远不会 finish()
activity 作为 navigate()
调用的一部分,因此您需要自己完成。
使用具有不同导航图的多个活动不是根据Navigating Navigation talk and this approach fails in many ways (such as deep linking and invalidation after process death/recreation) that are correctly handled by the guide for handling login. When using one NavController and the ability to listen for navigation events在导航中处理身份验证的推荐方法,您不运行进入这些问题。
这个问题专门与 androidx.navigation 库相关。
我将我的主要图表分成了 2 个图表,因为我想要一个带有底部导航,上面有片段,另一个没有。我没有使用 <include...
,而是将 activity 添加到第一张图
<activity
android:id="@+id/Activity2"
android:name="com...Activity2"
android:label="Activity2" />
这一切都很好,但我在第一个图中也有一个初始屏幕,用于检查用户是否已通过身份验证并将他们直接导航到第二个图中。对于一个片段,我可以只使用标准 popTo
和 popToInclusive
来管理片段后台堆栈,但我无法弄清楚如何通过两个活动来做到这一点,所以当第二个 activity 被启动,第一个被杀死并从后台堆栈中删除,因此用户无法向后导航。
目前我只是在导航发生的片段中处理它
navController
.navigate(R.id.action_someFragment_to_anotherFragment)
requireActivity().finish()
这行得通,但它留下了错误的余地,如果可能的话,我想用导航库来处理它。
每个人NavController
都是完全独立的。虽然 <activity>
目的地允许您使用 navigate()
前往完全独立的 activity(可能会或可能不会使用导航本身),但导航本身永远不会 finish()
activity 作为 navigate()
调用的一部分,因此您需要自己完成。
使用具有不同导航图的多个活动不是根据Navigating Navigation talk and this approach fails in many ways (such as deep linking and invalidation after process death/recreation) that are correctly handled by the guide for handling login. When using one NavController and the ability to listen for navigation events在导航中处理身份验证的推荐方法,您不运行进入这些问题。