10

私が構築しているアプリ内では、単一のアクティビティ アーキテクチャを使用し、Google の新しいナビゲーション コンポーネントを使用してアプリ内を移動することにしました。
それは大きな期待を示していますが、いくつかの欠点があり、私の質問はそのうちの 1 つです。

順番にナビゲートされる 3 つのフラグメントがあるとします。ただし、3 番目のフラグメントにいるときに [戻る] ボタンをクリックすると、最初のフラグメントに戻りたいとします。手順は次のとおりです。

1 から 2 から 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

これに関するヘルプをいただければ幸いです。

4

2 に答える 2