本文首发于微信公众号「Android开发之旅」,欢迎关注 ,获取更多技术干货
前言
Navigation 直接翻译即为导航,它是 Android Jetpack 组件之一,让单 Activity 应用成为首选架构。应用内Fragment页面的跳转则由 Navigation 来处理,开发者无需在处理 FragmentTransaction 的复杂性以及相关的转场动画。
具体使用
在app的gradle.build中添加依赖:
def nav_version = "2.1.0"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
首先我们定义三个Fragment,分别为Fragment1,Fragment2和Fragment3。实现逻辑为Fragment1点击跳转到Fragment2,Fragment2点击跳转到Fragment3,Fragment3跳转到Fragment1同时点击返回键时也返回到Fragment1。
navigation: 导航视图XML的根结点。里面定义相关fragment的跳转逻辑。
首先需要在res资源目录下新建 navigation 文件夹,右键新建一个Navigation resource file命名为nav_graph_main.xml。
文件左下脚分为两个Tab:Design和Text。Design视图是可视化的,可以直接选择相关fragment。Text视图是我们手写相关配置。
我们看下定义的nav_graph_main.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/fragment1">
<fragment
android:id="@+id/fragment1"
android:name="com.jetpack.jetpackdemo.navigation.fragment.Fragment1"