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

Dan*_*son 7 android android-fragments android-jetpack android-architecture-navigation

使用 Android 的Navigation Component,我有 3 个由单个 Activity 托管的片段。启动片段是一个启动屏幕片段 (A),如果用户未登录,我启动登录片段 (B),如果用户已登录,我启动列表片段 (C)。

因此发射路线是 A->B->C 或 A->C。

当您降落在 B 或 C 上时,按返回键应该会终止该应用程序。不过,NavigationController 却备份到 A(我认为,AonActivityCreated肯定会在崩溃时被调用,这可能与此无关)。

图形编辑器中 A -> B 的弹出行为似乎允许我弹出到不同的片段,但似乎没有一个选项可以直接终止应用程序。

我真的需要覆盖onBackPressed这种行为并终止该活动吗?因为如果没有 NavigationController,这会更容易,所以通常我会在开始新活动时完成一项活动。

小智 3

在图形编辑器中打开文本选项卡以查看 xml 代码,找到您的两个操作 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>
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案不再有效,因为 **app:clearTask="true"** 不再可用。请参阅此线程的解决方案:/sf/ask/3732018881/ (17认同)