首页 > 解决方案 > 导航到目的地的弹出片段

问题描述

我有这样的容器活动:

    <fragment
        android:id="@+id/nav_host_container"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/my-graph-name" />

我的活动也是这样配置的:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        NavigationUI.setupActionBarWithNavController(
            this,
            findNavController(R.id.nav_host_container)
        )
    }

    override fun onSupportNavigateUp(): Boolean {
        return findNavController(R.id.nav_host_container).navigateUp()
    }

我的图表有 startDestination 一个带有动作的片段:

        <action
            android:id="@+id/action1"
            app:popUpTo="@+id/my1stFragment"
            app:popUpToInclusive="true"
            app:destination="@+id/my2ndFragment" />

问:为什么当我点击 my2ndfragment 工具栏的“向上”按钮时,我的图表基本上是从头开始的?我希望这样的行动能够结束活动。

标签: androidandroid-architecture-navigationandroid-jetpack-navigation

解决方案


根据Android文档

如果用户位于应用程序的起始目的地,则向上按钮不会出现,因为向上按钮永远不会退出应用程序。但是,后退按钮会显示并退出应用程序。

当您的应用程序使用另一个应用程序任务的深层链接启动时,Up 会将用户转换回您的应用程序的任务并通过模拟的返回堆栈,而不是触发深层链接的应用程序。但是,“后退”按钮确实会将您带回另一个应用程序。


推荐阅读