Android 喷气背包导航启动上一屏幕

Android 喷气背包导航启动上一屏幕,android,android-jetpack,android-jetpack-navigation,Android,Android Jetpack,Android Jetpack Navigation,我有一个简单的导航设置,由3个屏幕组成: Screen 1 -> Screen 2 -> Screen 3 |______________________^ 屏幕2是完成一次后可以跳过的注册表单 我有一个关于Jetpack导航图的奇怪问题,当从屏幕2->3导航时,应用程序因为屏幕1而崩溃!onViewCreated已激活,无法找到导航方向: java.lang.IllegalArgumentException: navigation destination com

我有一个简单的导航设置,由3个屏幕组成:

Screen 1 -> Screen 2 -> Screen 3
    |______________________^
屏幕2是完成一次后可以跳过的注册表单

我有一个关于Jetpack导航图的奇怪问题,当从屏幕2->3导航时,应用程序因为屏幕1而崩溃!onViewCreated已激活,无法找到导航方向:

    java.lang.IllegalArgumentException: navigation destination 
com.example.app:id/action_screen1_to_screen3 is unknown to this NavController
我的导航图:

   <fragment
        android:id="@+id/screen1"
        android:name="Screen1Fragment"
        android:label="Screen 1"
        tools:layout="@layout/fragment_screen_1">
        <action
            android:id="@+id/action_screen1_to_screen2"
            app:destination="@id/screen2"
            app:launchSingleTop="false"/>
        <action
            android:id="@+id/action_screen1_to_screen3"
            app:destination="@id/screen3"
            app:launchSingleTop="false"
            app:popUpTo="@id/screen1"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/screen2"
        android:name="Screen2Fragment"
        android:label="Screen 2"
        tools:layout="@layout/fragment_screen_2">
        <action
            android:id="@+id/action_screen2_to_screen3"
            app:destination="@id/screen3"
            app:launchSingleTop="false"
            app:popUpTo="@id/screen2"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/screen3"
        android:name="Screen3Fragment"
        android:label="Screen 3"
        tools:layout="@layout/fragment_screen_3">
    </fragment>
[...]
app:popUpTo="@id/nav_graph"
app:popUpToInclusive="true"
[...]
我的Gradle进口:

    def nav_version = "2.3.0-alpha04"
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

感谢您的帮助,谢谢

我不知道为什么会发生这种情况,但我找到的解决方案是在当前屏幕上弹出整个导航图,而不是弹出:

   <fragment
        android:id="@+id/screen1"
        android:name="Screen1Fragment"
        android:label="Screen 1"
        tools:layout="@layout/fragment_screen_1">
        <action
            android:id="@+id/action_screen1_to_screen2"
            app:destination="@id/screen2"
            app:launchSingleTop="false"/>
        <action
            android:id="@+id/action_screen1_to_screen3"
            app:destination="@id/screen3"
            app:launchSingleTop="false"
            app:popUpTo="@id/screen1"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/screen2"
        android:name="Screen2Fragment"
        android:label="Screen 2"
        tools:layout="@layout/fragment_screen_2">
        <action
            android:id="@+id/action_screen2_to_screen3"
            app:destination="@id/screen3"
            app:launchSingleTop="false"
            app:popUpTo="@id/screen2"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/screen3"
        android:name="Screen3Fragment"
        android:label="Screen 3"
        tools:layout="@layout/fragment_screen_3">
    </fragment>
[...]
app:popUpTo="@id/nav_graph"
app:popUpToInclusive="true"
[...]

能否尝试添加此顶级变量:val navController=Navigation.findNavControlleractivity,R.id.nav_host_片段并更改视图?.findNavController.navigate by并调用navController.navigate仅尝试使用您建议的单个navController,同样的结果,我有一个单一的导航主机。你知道为什么第一屏被调用吗?这是Popupt吗?看来这个问题大家都知道了,这里有几篇文章可能会对你有所帮助,谢谢@Biscuit的帮助!这不是问题所在,但会导致一种解决方法。