一、 Navigation简介
1.1 Navigation诞生背景
采用单个Activity嵌套多个Fragment的UI架构模式,已经被大多数的Android工程师所接受。但是,对于Fragment的管理一直是一件比较麻烦的事情,工程师需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。
在Android中,页面的切换和管理包括应用程序Appbar的管理、Fragment的动画切换以及Fragment之间的参数传递等内容。并且,纯代码的方式使用起来不是特别友好,并且Appbar在管理和使用的过程中显得很混乱。因此,Jetpack提供了一个名为Navigation的组件,旨在方便开发者管理Fragment页面和Appbar。
相比之前Fragment的管理需要借助FragmentManager和FragmentTransaction,使用Navigation组件有如下一些优点:
- 可视化的页面导航图,方便我们理清页面之间的关系
- 通过destination和action完成页面间的导航
- 方便添加页面切换动画
- 页面间类型安全的参数传递
- 通过Navigation UI类,对菜单/底部导航/抽屉蓝菜单导航进行统一的管理
- 支持深层链接DeepLink
在正式学习Navigation组件之前,我们需要对Navigation的主要元素有一个简单的了解,Navigation主要由三部分组成。
- Navigation Graph:一个包含所有导航和页面关系相关的 XML资