我在自己的android应用中将NavigationUI的Android体系结构组件与底部导航结合使用。我有以下情况
navController.popBackStack()
现在问题出在导航图上,我的起始片段是 A (通过定义app:startDestination="@id/fragmentA"
),但是现在从活动中弹出了。因此,只要我反压,该应用程序便会立即关闭,而不是返回上一个片段。例如,假设我从片段 B 导航到片段 C 或 D ,如果我按“后退”按钮,我的应用将关闭而不是关闭分割 B 。是否有办法“重新分配” startDestination
?
我检查了this问题的答案,该问题的情况与上述类似,但使用NavOptions
却不起作用。还有其他办法吗?以下是我用来弹出片段并添加导航选项的代码
navController.popBackStack()
val navOptions: NavOptions = NavOptions.Builder()
.setPopUpTo(R.id.homeFragment, true)
.build()
navController.navigate(R.id.action_fragmentA_to_fragmentB, null, navOptions)
答案 0 :(得分:0)
使用此导航图。希望它能解决您的问题。
<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/fragment_a">
<fragment
android:id="@+id/fragment_a"
tools:layout="@layout/fragment_a">
<action
android:id="@+id/action_a_to_b"
app:destination="@id/fragment_b"
app:popUpTo="@id/fragment_a"
app:popUpToInclusive="true"/>
</fragment>
<fragment
android:id="@+id/fragment_b"
tools:layout="@layout/fragment_b">
<action
android:id="@+id/action_b_to_c"
app:destination="@id/fragment_c"/>
</fragment>
<fragment
android:id="@+id/fragment_c"
tools:layout="@layout/fragment_c">
</fragment>
</navigation>
使用以下行进行导航:
navController.navigate(R.id.action_a_to_b)
navController.navigate(R.id.action_b_to_c)