1.Navigation是什么?
官方文档中的介绍
那它其实就是一个对 Fragment / Activity 进行统一调度跳转的组件库,
2.Navigation怎么用?
第一步、module中添加依赖。
  def nav_version = "2.4.1"
  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"
 
第二步,建立一个Activity 和 多个Fragment 在Activity的xml布局上引入<\fragment>标签;这里面有3个字段跟普通view不一样。
 <fragment
        android:id="@+id/fragment_main"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />
 
① android:name=“androidx.navigation.fragment.NavHostFragment”
 ② app:defaultNavHost=“true”
 设置打开回退栈
 ③ app:navGraph="@navigation/nav_graph"”
 引用navigation布局
<?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"
    android:id="@+id/nav_graph"
    app:startDestination="@layout/fragment_a">
    <action
        android:id="@+id/action_fmta_to_fmtb"
        app:destination="@id/fmt_a"
        app:enterAnim="@anim/nav_default_enter_anim"
        app:exitAnim="@anim/nav_default_exit_anim" />
    <action
        android:id="@+id/action_fmtb_to_fmtc"
        app:destination="@id/fmt_b"
        app:enterAnim="@anim/nav_default_enter_anim"
        app:exitAnim="@anim/nav_default_exit_anim" />
    <action
        android:id="@+id/action_fmtc_to_fmtd"
        app:destination="@id/fmt_c"
        app:enterAnim="@anim/nav_default_enter_anim"
        app:exitAnim="@anim/nav_default_exit_anim" />
    <action
        android:id="@+id/action_fmtd_to_fmta"
        app:destination="@id/fmt_d"
        app:enterAnim="@anim/nav_default_enter_anim"
        app:exitAnim="@anim/nav_default_exit_anim" />
    <!--    一个faragment、activity代表一个目标  fragment,activity-->
    <fragment
        android:id="@+id/fmt_a"
        android:name="com.socket.navigation.FragmentA"
        android:label="AAAA"
        tools:layout="@layout/fragment_a" />
    <fragment
        android:id="@+id/fmt_b"
        android:name="com.socket.navigation.FragmentB"
        android:label="BBBB"
        tools:layout="@layout/fragment_b" />
    <fragment
        android:id="@+id/fmt_c"
        android:name="com.socket.navigation.FragmentC"
        android:label="CCCC"
        tools:layout="@layout/fragment_c" />
    <fragment
        android:id="@+id/fmt_d"
        android:name="com.socket.navigation.FragmentD"
        android:label="DDDD"
        tools:layout="@layout/fragment_d" />
    <argument
        android:name="demo"
        android:defaultValue="TEST_STATIC_PARPMS" />
    <deepLink app:uri="http://www.kerwinwebsite.com/{params}" />
</navigation>
 










