Android导航架构组件 - 导航架构组件是否只适用于单个活动?

14

我目前正在学习新的Android Navigation Architecture Componenthttps://developer.android.com/topic/libraries/architecture/navigation/)。

我对它的动机和概念有些困惑,以下是我的疑问:

  1. Android Navigation Architecture Component是否旨在消除在单个应用程序中使用多个Activity的需求?这意味着整个应用程序只需要一个Single Activity,所有其他页面将是Fragment吗?
  2. 在应用程序中使用多个Activity,但同时使用Android Navigation Architecture Component导航到Fragment实际上是否违反了Android Navigation Architecture Component的目的?

问题2的示例场景

enter image description here

1个回答

10
理论上,Navigation库支持任何您想使用的架构。它可以处理活动和片段作为导航目标,但您可以通过实现自己的Navigator(例如,请参见这篇文章)插入自己的解决方案。
然而,引用/转述自Google I/O关于导航的讲话
“我的Activity实际上应该做什么?” 现在,一些应用程序非常依赖Activity,一些则依赖Fragment,或者完全使用不同的系统。我们正在向一个模型迈进,在这个模型中,Activity更多地只是您的应用程序的入口点,而不是您的应用程序内容的所有者。它实际上只会存储全局状态,例如全局导航,如导航抽屉或底部栏。
因此,Google建议您的应用程序只有几个活动,因为您只需要它们作为入口点。例如,您可以从启动器打开一个,另一个可以由深链接打开。之后,当您的应用程序启动时,您可以在其中使用片段进行其他所有操作。
总结并直接回答您的两个问题:
  1. 导航架构组件并非“旨在消除使用多个活动”的需要,但当你使用它时,这是谷歌推荐的做法。

  2. 你仍然可以混合使用多个活动和多个片段。甚至可以使用单个活动进行纯视图导航。这完全取决于你。如果你发现导航库与你的应用程序架构结合使用很有用,请使用它。

    虽然该库的工具可能不太适用于自定义目标(例如,视觉编辑器可能仅支持活动和片段),但你可以从代码中按照自己的方式使用它。


我只是在使用navigation-android。我对一个问题感到困惑。当我在我的应用程序中使用底部导航时,当我导航到另一个片段时,底部导航仍然存在。有没有办法处理这个问题?我不想在我的新片段中看到底部导航。 - Freddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接