Android Navigation 组件

更新日期: 2021-02-01 阅读次数: 2094 字数: 289 分类: Android

Navigation 组件适用场景

  • 一个 main activity 包含多个 fragment, 多个 fragment 相互跳转时,需要用到 Navigation 组件。
  • 一个 App 包含多个 activity 时, 每个 activity 都需要有一个独立的 Navigation 组件来处理内部 fragment 切换。

The Navigation component is designed for apps that have one main activity with multiple fragment destinations. The main activity is associated with a navigation graph and contains a NavHostFragment that is responsible for swapping destinations as needed. In an app with multiple activity destinations, each activity has its own navigation graph.

Navigation 组件的构成

  • navigation graph: 一个 xml 资源文件,定义了 fragment 间的跳转关系。可通过图形化编辑器,连线操作。
  • NavHost: 对应 NavHostFragment,界面上的一块区域用来展示当前的目标 fragment。NavHostFragment 位于 main activity 的 layout xml 中。
  • NavController: 操作 navigation 的页面切换。

navigation graph 中的一些概念及名词

  • destination: 目的地,其实就是一个个 fragment。
  • action: 行为,其实就是 fragment 间的带箭头的连线。

action 属于一个 fragment,一个 action 只能被其所属 fragment 调用。

<fragment
	android:id="@+id/blankFragment"
	android:name="com.example.cashdog.cashdog.BlankFragment"
	android:label="fragment_blank"
	tools:layout="@layout/fragment_blank" >
	<action
		android:id="@+id/action_blankFragment_to_blankFragment2"
		app:destination="@id/blankFragment2" />
</fragment>

Kotlin 获取 NavController 的三种方法

  • Fragment.findNavController()
  • View.findNavController()
  • Activity.findNavController(viewId: Int)

参考

  • https://developer.android.com/guide/navigation

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式