首页 > 解决方案 > 使用 Android 导航组件在返回堆栈上重用 startDestination 片段

问题描述

我在一个小示例应用程序中使用 Android 导航组件。所以我的工具栏中有一个导航抽屉和一个汉堡按钮来打开抽屉。

在抽屉里有一个选项可以打开一个特定的片段(比如 WebViewFragment)。在我的 MainActivity 中设置 appConfiguration 时,我传入了一组可以通过 DrawerLayout 访问的所有片段。

        appBarConfiguration =
            AppBarConfiguration.Builder(
                setOf(
                    R.id.newsFragment,
                    R.id.webViewFragment,
                    R.id.loginFragment
                )
            )
                .setDrawerLayout(drawer)
                .build()

如果我不这样做,当用户导航到其中一个片段时,Burger 按钮将变为后退箭头以指示可能的后退导航。

这一切都很好,但是当我想重用可以通过抽屉布局访问的“开始”片段之一时,我遇到了问题。当我想从 MainFragment 导航到 WebViewFragment 时,例如通过某个按钮,我希望抽屉按钮更改为后退按钮。但是由于我将 WebViewFragment 传递给了 AppConfiguration,这似乎是不可能的,它似乎被固定为“根”或“起始目的地”。有谁知道不包括从 WebViewFragment 继承的答案。我想避免这种情况,因为我不喜欢继承,而且我认为这不是处理这个问题的正确方法。

我真的很感激任何建议。

标签: androidkotlinandroid-architecture-navigation

解决方案


推荐阅读