Android Jetpack导航组件上具有不同行为的后退和向上按钮

Android Jetpack导航组件上具有不同行为的后退和向上按钮,android,android-navigation,android-jetpack,android-architecture-navigation,Android,Android Navigation,Android Jetpack,Android Architecture Navigation,我正在尝试创建一个目的地,当我按back/up关闭应用程序时。因此,我为起始目的地设置了popUpTo,并将popuptinclusive设置为true。 问题是,当我按下后退按钮时,应用程序按预期关闭,但如果我按下向上按钮(工具栏后退箭头),活动将重新创建 导航图: <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com

我正在尝试创建一个目的地,当我按back/up关闭应用程序时。因此,我为起始目的地设置了popUpTo,并将popuptinclusive设置为true。 问题是,当我按下后退按钮时,应用程序按预期关闭,但如果我按下向上按钮(工具栏后退箭头),活动将重新创建

导航图:

<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_graph"
    app:startDestination="@id/call">

    <fragment
        android:id="@+id/call"
        android:name="com.example.navigationplayground.main.CallFragment"
        android:label="Call"
        tools:layout="@layout/fragment_call" />
    <fragment
        android:id="@+id/agenda"
        android:name="com.example.navigationplayground.main.AgendaFragment"
        android:label="Agenda"
        tools:layout="@layout/fragment_agenda" >
        <action
            android:id="@+id/openDetail"
            app:destination="@id/detailFragment"
            app:popUpTo="@+id/call"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/detailFragment"
        android:name="com.example.navigationplayground.main.DetailFragment"
        android:label="Detail"
        tools:layout="@layout/fragment_detail"/>

</navigation>


从详细信息屏幕查看后退和向上按钮的行为

问题在于
up
back
具有不同的行为

向上按钮永远不会退出应用程序

如果用户位于起始目的地,则不应显示向上按钮。当您的应用程序在另一个应用程序的任务上使用深度链接启动时,Up应将用户带到分层父目标,而不是返回到另一个应用程序

如果你不想遵循指导原则,一个可能的解决方法就是改变这条路线

val appBarConfiguration = AppBarConfiguration(setOf(R.id.call, R.id.agenda))
对这个

val appBarConfiguration = AppBarConfiguration(setOf(R.id.call, R.id.agenda, R.id.detailFragment))
这基本上意味着你的
开始
目的地可以是上面列表中的一个。而
start
意味着用户在该屏幕上按下后将退出应用程序

更多详情:


您是指工具栏上的后退箭头按钮吗?是的。。系统上的“后退”按钮按预期工作。向上按钮(工具栏返回箭头)重新创建activityUp按钮永远不会退出你的应用程序,因此我的方法是错误的。。但是“向上”按钮重新加载活动有点奇怪。。thx人