私が構築しているアプリ内では、単一のアクティビティ アーキテクチャを使用し、Google の新しいナビゲーション コンポーネントを使用してアプリ内を移動することにしました。
それは大きな期待を示していますが、いくつかの欠点があり、私の質問はそのうちの 1 つです。
順番にナビゲートされる 3 つのフラグメントがあるとします。ただし、3 番目のフラグメントにいるときに [戻る] ボタンをクリックすると、最初のフラグメントに戻りたいとします。手順は次のとおりです。
<?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>
ここでの問題は、ナビゲーションを 2 回繰り返したいときに、次のような例外が発生することです。
java.lang.IllegalArgumentException: ナビゲーション先 com.hmomeni.navisample:id/action_firstFragment_to_secondFragment がこの NavController に認識されていません
さらに調査すると、[戻る] ボタンを押して最初のフラグメントに戻ると、 はnavController.currentDestination
まだThirdFragment
間違っている を参照していることがわかりますFirstFragment
。
これに関するヘルプをいただければ幸いです。