在多个活动中使用导航组件

时间:2019-05-17 10:13:18

标签: android android-architecture-navigation

在Android文档中,它指出:

  

导航组件是为具有一个主要活动且具有多个片段目标的应用程序设计的。主要活动与导航图相关联,并包含一个NavHostFragment,它负责根据需要交换目标。在具有多个活动目标的应用中,每个活动都有自己的导航图。

这是否意味着您不能使用导航组件从一个活动导航到另一个活动?似乎是这样。

第二个问题:如果我创建了一个使用导航抽屉的应用程序,则在添加活动以创建一个导航抽屉时创建的默认代码已经具有用于管理从一个抽屉项目到另一个抽屉项目的代码。那么导航组件在这里也没有用吗?

Google是否要我们仅创建单一活动的应用程序?

2 个答案:

答案 0 :(得分:1)

  

Google是否要我们仅创建单一活动的应用程序?

您可以朝着单一活动架构迈进。它不受Google限制(仅推荐)。该体系结构有其自身的优点和缺点。您不必仅添加整个导航组件就可以删除整个应用程序。评估并确定是否值得付出痛苦。

  

这是否意味着您不能使用导航组件来   从一项活动导航到另一项活动

否,您可以使用导航组件替换startActivity调用。只需将“第二活动导航图”添加到“第一活动导航图”,然后使用导航控制器在两者之​​间导航。

findNavController().navigate(directions)

这里是https://developer.android.com/guide/navigation/navigation-migrate#add的迁移指南

在某些情况下,您想使用其他活动,则可以评估是否需要其他活动或其他任务。

  

如果我创建一个使用导航抽屉的应用,则默认代码   添加具有导航功能的活动时创建的   抽屉已经具有用于管理一个抽屉项目中的导航的代码   到另一个。那么导航组件在这里也没有用吗?

  

而不是使用默认代码来构建导航抽屉   您自己的导航抽屉,与导航更加内联   组件

问题是您不必构建自定义组件或任何复杂的东西。实际上,使用Navigation Component(借助NavigationUI类)可以简化抽屉布局及其侦听器的代码。

this link,该文档可帮助您在使用导航抽屉和底部导航视图时实现导航组件。

关于生成的模板,这些模板已经过时,需要升级。

参考:

https://developer.android.com/guide/navigation/navigation-migrate https://developer.android.com/guide/navigation/navigation-ui

答案 1 :(得分:1)

答案是 不必要

在Navigation Component的想法中,你需要有1 + 3个部分和无限的片段。

您可以观看Google Navigation Component Video

只有一项活动。

  1. 单个活动

这些在一个活动(单个活动)中起作用。

  1. 导航图
  2. NavHostFragment
  3. 导航控制器
<块引用>

为什么没有必要?因为,“1+3”的所有部分都是相互联系的。

详情: 导航图与 NavFostFragment 相连。此外,NavFostFragment 在 Single Activity 的 XML 文件中定义。此外,NavController 由 NavController 定义为“navHostFragment.navController”。

但是,如果你真的想使用Navigation Compenent for Activity,你需要在Activity中使用add fragment。

例如:

[Activity_A + Fragment_A] 和 [Activity_B + Fragment_B]

<块引用>

解决思路是:

对于 Activity_A 到 Activity_B:导航 Fragment_A -> Activity_B

您可以迁移。对于 Activity_A 到 Activity_B:导航 Fragment_A -> Activity_B

更多细节:Migrate to the Navigation component by Google