【发布时间】:2021-05-14 14:21:12
【问题描述】:
我在从深层链接(通过通知)启动应用程序时遇到了后台堆栈问题。
总体思路是我有 3 个片段(A、B、C)。 A 屏幕用作启动屏幕,所以我在动作中添加了popUpTo 和popUpToInclusive,所以我再也看不到它了。我的深层链接目的地是片段 C。为了实现正确的回栈,我将 B 和 C 合并到嵌套导航中。不幸的是,当我在片段 B 中按下后退按钮时,应用程序正在显示片段 A。我猜这是因为当应用程序从深层链接本身启动时,从未调用过带有 popUpTo 的从 A 到 B 的操作。我的问题是:如何避免在这种特殊情况下从 B 回到 A?
提前致谢!我附上示例代码:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/splashFragment">
<fragment
android:id="@+id/A"
android:name="A"
android:label="A" >
<action
android:id="@+id/action_A_to_B"
app:destination="@id/B"
app:popUpTo="@id/A"
app:popUpToInclusive="true" />
</fragment>
<navigation android:id="@+id/nested_nav"
app:startDestination="@id/B">
<fragment
android:id="@+id/B"
android:name="B"
android:label="B">
<action
android:id="@+id/action_B_to_C"
app:destination="@id/C" />
</fragment>
<fragment
android:id="@+id/C"
android:name="C"
android:label="C">
</fragment>
</navigation>
</navigation>
还有我的 DeepLinkBuilder(没什么特别的,和文档一样)
NavDeepLinkBuilder(requireContext())
.setGraph(R.navigation.nav_graph)
.setDestination(R.id.userProfileFragment)
.createPendingIntent()
.send()
【问题讨论】:
标签: android navigation deep-linking android-architecture-navigation fragment-backstack