基本使用:
1、第一步:setting ->experimental->enable Navigation Editor 打对勾
2、新建Navigation.xml
3、创建好了以后,咱们可以创建我的Fragment界面,然后在xml里面来编辑我的路由文件
如上图所示,在创建的Navigation的xml文件里面选中Design模式,点击左上角的+号可以导入我们创建好的fragment文件,选中我们导入的fragment文件以后会有小圆点,直接用鼠标拖拽我们想要路由到的界面,这个功能有点像IOS的storyBorad,在xml里面你会看到如果拖拽了线条的话会自动生成一个action的选项,这个里面带一个id,这个id就是我们待会要用来实现fragment路由跳转的id值
4、在activity中使用
navController = Navigation.findNavController(this, R.id.garden_nav_fragment)
R.id.garden_nav_fragment 就是当前页面布局中的设置的切换内容的fragment的id 比如
<fragment
android:id="@+id/garden_nav_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_garden"/>
name 属性必须是如上的内容
app:navGraph 关联新建的xml
这个相当于切换页面内容
navController.navigate(R.id.plant_list_fragment)
5、Navigation 与NavigationView 的配合使用
NavigationView 一般设置为左侧侧滑菜单 与DrawerLayout配合使用
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
style="@style/Widget.MaterialComponents.NavigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:menu="@menu/menu_navigation"/>
app:headerLayout 设置头部布局
app:menu 设置列表布局
menu内容
menu中item的id值必须与Navigation.xml 中定义的fragment的id对应 不然点击没有反应
比如
在activity中进行关联
navController = Navigation.findNavController(this, R.id.garden_nav_fragment)
这里使用了databing binding.navigationView就是我们要关联的NavigationView
binding.navigationView.setupWithNavController(navController)
这样点击menu中的item 就可以切换内容了