Android导航体系结构组件,处理不同的堆栈

时间:2018-12-10 10:34:14

标签: android android-fragments android-architecture-navigation

我正在寻找Navigation Architecture组件,我所看到的所有示例都是关于与Android底部菜单集成的单个Activity应用程序的,所以我想知道这个组件是否对我的情况有用。 我的应用程序如下所示: 下载一些数据的SplashActivity,如果一切正常,请启动Main活动。 MainActivity具有自定义的底部导航,该导航允许用户导航到应用程序的3个不同部分(A,B,C),并且在每个部分内部,用户可以浏览更深的iside部分本身:

A节:FragmentAOne-> FragmentATwo-> FragmentAThree

B部分:FragmentBOne-> FragmentBTwo

C部分:FragmenCOne-> FragmentCTwo-> FragmentCThree

,在某些情况下,用户可以从其中的某些片段中打开另一个活动,以显示全屏Web视图。

现在,我需要每个部分都独立于其他部分(每个片段都应具有其堆栈),以便用户可以位于FragmentAThree内,导航至FragmentCOne并返回至A节,然后仍然停留在FragmentAThree内。

导航体系结构组件可以处理这种奇怪的情况吗?

1 个答案:

答案 0 :(得分:0)

这可以通过最新的导航组件来实现,您将需要像这样设置顶级目的地:

    val drawerLayout : DrawerLayout? = findViewById(R.id.drawer_layout)
    appBarConfiguration = AppBarConfiguration(
            setOf(R.id.FragmentAOne, R.id.FragmentBOne, R.id.FragmenCOne),
            drawerLayout)

可通过全局导航UI到达的目的地(例如底部导航或侧面导航)在用户看来都位于层次结构的同一顶层。因此,它们是顶级目的地。 FragmentAOne,FragmentBOne和FragmenCOne位于底部导航栏中,我们希望在这两个目的地上都显示抽屉图标,因此它们是顶级目的地。

请注意,起始目的地始终被视为顶级目的地。如果您未指定顶级目的地列表,则唯一的顶级目的地就是您的起始目的地。您可以在文档中了解有关AppBarConfiguration的更多信息。

您可以在导航代码实验室https://codelabs.developers.google.com/codelabs/android-navigation

中进行阅读和尝试