<fragment
android:id=“@+id/afragment”
android:name=“com.llw.navigation.fragment.AFragment”
android:label=“afragment”
tools:layout=“@layout/fragment_a” />
上面的也很简单,id表示它在导航图的标识,name指明这个Fragment的路径,包名+类名。label就是标签而已。layout就是绑定这个Fragment对应的布局。
这里你肯定回想,刚才不是在AFragment的onCreateView方法的返回中指明这这个布局吗?
那么这里又添加是为什么,因为你如果在导航图中指明了某一个Fragment的布局,那么在代码中就可以不用指明,也可以两者都指明,但至少要有一个地方指明,所以我这样写是可以的。为了让看的人更了解而已,虽然是多此一举。
那么这个nav_graph.xml的其他的Fragment也要添加,如下所示
<?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”>
<fragment
android:id=“@+id/afragment”
android:name=“com.llw.navigation.fragment.AFragment”
android:label=“afragment”
tools:layout=“@layout/fragment_a” />
<fragment
android:id=“@+id/bfragment”
android:name=“com.llw.navigation.fragment.BFragment”
android:label=“bfragment”
tools:layout=“@layout/fragment_b” />
<fragment
android:id=“@+id/cfragment”
android:name=“com.llw.navigation.fragment.CFragment”
android:label=“cfragment”
tools:layout=“@layout/fragment_c” />
<fragment
android:id=“@+id/dfragment”
android:name=“com.llw.navigation.fragment.DFragment”
android:label=“dfragment”
tools:layout=“@layout/fragment_d” />
<fragment
android:id=“@+id/efragment”
android:name=“com.llw.navigation.fragment.EFragment”
android:label=“efragment”
tools:layout=“@layout/fragment_e” />
然后你会发现还报错,那么你可以现在navigation标签中添加
tools:ignore=“UnusedNavigation”
它就不报错了,这句话的意思是未使用导航的许可。因为我现在还没有使用这个nav_graph.xml所以要加上这一句话告诉AS,让它放心。等我们真正去使用时,是没有影响的,去不去掉都行。
[](()3. 添加NavHost
这个在上面是介绍过的,它是用来装载和显示Fragment的,都知道Fragment是要依附在Activity上的,那么很明显这个NavHost也是要放在Activity中,那么下面打开activity_main.xml。修改代码如下:
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayou