【问题标题】:Pop fragment on navigating to destination导航到目的地的弹出片段
【发布时间】:2019-11-29 19:04:53
【问题描述】:

我有这样的容器活动:

    <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 工具栏的“向上”按钮时,我的图表基本上是从头开始的?我希望这样的行动能够结束活动。

【问题讨论】:

    标签: android android-architecture-navigation android-jetpack-navigation


    【解决方案1】:

    根据Android documentation

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

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

    【讨论】:

    • 对不起,我花了一些时间来消化这个,但我仍然不明白它对我的情况有何帮助。
    • 文档基本上是说您正在看到所需的行为。向上按钮不应离开应用程序。如果您希望它关闭当前活动,那么您可能不得不导航到另一个图表或自己在活动上调用finish()
    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2021-12-23
    • 2021-05-16
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多