导航组件无法弹出以退出应用程序

7
使用 Android 的 Navigation Component,我有 3 个片段由一个单一的 Activity 托管。启动片段是一个闪屏片段(A),如果用户没有登录,我会启动登录片段(B),如果他们已经登录,我会启动列表片段(C)。
所以启动路线要么是 A->B->C,要么是 A->C。
当您进入 B 或 C 时,按返回键应该关闭应用程序。但是 NavigationController 却回退到了 A(我认为,A 的 onActivityCreated 被调用,此时它会崩溃,这可能与此无关)。
在 A->B 的图形编辑器中,弹出行为似乎允许我弹出到不同的片段,但似乎没有选项只是关闭应用程序。
我真的需要覆盖 onBackPressed 来进行这个操作并直接关闭 Activity 吗?因为没有 NavigationController 更容易,通常我会在启动新 Activity 时结束旧 Activity。
1个回答

3
在Graph编辑器中打开文本选项卡,查找您的两个操作A -> B和A -> C,并添加标签:app:clearTask="true",这样当用户按下返回按钮时,它应该会关闭您的应用程序。
示例:
 <fragment
        android:id="@+id/launcher_fragment"
        android:name="com.example.LauncherFragment"
        android:label="launcher_fragment">
        <action
            android:id="@+id/action_launcher_to_login"
            app:destination="@id/login_fragment"
            app:clearTask="true"/>
        <action
            android:id="@+id/action_launcher_to_list"
            app:destination="@id/list_fragment"
            app:clearTask="true" />
    </fragment>

哎呀,不错 :) 我认为这个应该在这里记录下来:https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing - Daniel Wilson
17
这个解决方案已经不再适用,因为app:clearTask="true"已经不再可用。请参考这个帖子中的解决方案:https://dev59.com/96_la4cB1Zd3GeqPy9MC - Dawid Tokarzewski
1
显然,您可以在XML中使用setPopupTo或popUpTo来实现此目的,您可以阅读我找到的这篇文章,以满足您的需求:https://proandroiddev.com/android-navigation-component-tips-tricks-implementing-splash-screen-f0f5ce046a09 - Trung Le

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接