当前位置: 首页 > 知识库问答 >
问题:

Android导航架构组件-导航架构组件是否意味着仅使用单个活动?

姬俊能
2023-03-14

我目前正在学习新的Android导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/).

我有点混淆了它的动机和概念,以下是我的不确定性:

  1. Android导航架构组件是否旨在消除在单个应用程序中使用多个活动的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面都将是片段?
  2. 在应用程序中使用多个活动,但同时使用Android导航架构组件来导航片段是否真的违反了Android导航架构组件的目的?

问题2的示例场景:

共有1个答案

羊舌高爽
2023-03-14

理论上,导航库支持您可能想要使用的任何架构。开箱即用,它可以将活动和片段处理为导航目的地,但您可以通过实现自己的导航器来插入自己的解决方案(例如,请参阅本文)。

然而,引用/转述了谷歌关于导航的I/O对话:

我的活动实际上是为了做什么?

目前,一些应用程序的活动量很大,一些应用程序的碎片量很大,或者完全在另一个系统中。我们正在朝着一种模式迈进,在这种模式中,活动不仅仅是你应用程序的入口点,而不是你应用程序内容的所有者。它实际上只是存储全局状态,例如全局导航,比如导航抽屉或底部栏。

所以谷歌建议你的应用程序只需要几个活动,因为你只需要它们作为入口点。例如,你可以有一个从启动器打开,另一个通过深层链接打开。之后,当你的应用程序启动时,你可以用碎片在里面做所有其他事情。

总结并直接回答您的两个问题:

>

您绝对仍然可以使用混合在一起的多个活动和多个片段。如果您愿意,您甚至可以将单个活动与纯粹基于视图的导航一起使用。这完全取决于您。如果您发现导航库与您的应用程序架构相结合很有用,请使用它。

库的工具对于定制目的地可能不是很好(例如,可视化编辑器可能暂时只支持活动和片段),但您可以从代码中随心所欲地使用它。

 类似资料:
  • 我一直在遵循导航架构组件中的文档,以了解这个新的导航系统是如何工作的。 要从一个屏幕到另一个屏幕进行/返回,您需要一个实现接口的组件。 NavHost是一个空视图,当用户在应用程序中导航时,目的地会随之交换。 但是,似乎目前只有片段实现了< code>NavHost 导航架构组件的默认NavHost实现是NavHostFragment。 所以,我的问题是: > < li> 即使我有一个可以用< c

  • 我不知道如何使用新的导航架构组件,从我的主屏幕(带有连接到底部应用程序栏的浮动操作按钮)导航到没有应用程序栏的另一个屏幕。 当我点击晶圆厂时,我想要我的下一个屏幕(片段?)从右侧滑入。问题是我应该把我的

  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • 我使用Android导航架构组件来导航一个基于片段的单活动应用程序。主导航通过NavigationDrawer模式实现:带有NavigationView和NavHostFragment plus的DrawerLayout以及附加工具栏。 到目前为止,一切都运行良好——我能够导航到每个片段——除了主级片段的BackStack。除了开始目的地之外的任何片段似乎都被添加到BackStack中,而不是像普

  • 是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。

  • 我正在使用BottomSheetDialogFraenge显示几个自定义设置的。 要求: 当我点击任何选项卡在BottomSheetDialogFraance我替换的片段,并将其添加到backstack,以便当用户点击的onBackPress或向上的行动,它应该回到最后设置的BottomSheetDialogFraank的片段。 我想使用导航架构组件来简化我的事务。 问题:如果我使用导航架构组件从