在我正在构建的应用程序中,我使用了单一活动架构,并决定使用 Google 的新导航组件在应用程序中导航。
尽管它显示出巨大的希望,但它也有一些缺点,我的问题就是其中之一。
假设我们有三个按顺序导航的片段,除了当我们在第三个片段上单击后退按钮时我们想返回第一个片段。事情是这样的:
<?xml version="1.0" encoding="utf-8"?>
<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/main_nav_graph.xml"
app:startDestination="@id/firstFragment">
<fragment
android:id="@+id/firstFragment"
android:name="com.hmomeni.navisample.FirstFragment"
android:label="fragment_first"
tools:layout="@layout/fragment_first" >
<action
android:id="@+id/action_firstFragment_to_secondFragment"
app:destination="@id/secondFragment" />
</fragment>
<fragment
android:id="@+id/secondFragment"
android:name="com.hmomeni.navisample.SecondFragment"
android:label="fragment_second"
tools:layout="@layout/fragment_second" >
<action
android:id="@+id/action_secondFragment_to_thirdFragment"
app:destination="@id/thirdFragment"
app:popUpTo="@+id/firstFragment" />
</fragment>
<fragment
android:id="@+id/thirdFragment"
android:name="com.hmomeni.navisample.ThirdFragment"
android:label="fragment_third"
tools:layout="@layout/fragment_third" />
</navigation>
这里的问题是,当我想第二次重复导航时,会发生异常告诉我:
java.lang.IllegalArgumentException:导航目的地 com.hmomeni.navisample:id/action_firstFragment_to_secondFragment 对此 NavController 是未知的
进一步调查显示,在点击返回按钮并返回第一个片段时,navController.currentDestination
仍然指的是ThirdFragment
哪个是错误的,应该是FirstFragment
。
对此的任何帮助表示赞赏。