Android Jetpack Navigation根本应用

本篇次要介绍一下 Android Jetpack 组件 Navigation 导航组件的 根本应用

当看到 Navigation单词的时候 应该就大略晓得 这是一个对于导航用的,上面我来简略介绍一下 如何应用Navigation组件的根本应用流程,并且一步步 实际操作一番 Navigation ,下图是案例,实现登录到详情的跳转

1.Navigation 基本概念

Navigation 是一个Jetpack组件 反对用户导航,用于在 Android 利用中的“指标”之间进行导航,无论 指标是Fragment,Activity 还是其余组件。

导航组件由以下三个要害局部组成:

  • 导航图:在一个集中地位蕴含所有导航相干信息的 XML 资源。这包含利用内所有单个内容区域(称为指标)以及用户能够通过利用获取的可能门路。
  • NavHost:显示导航图中指标的空白容器。导航组件蕴含一个默认 NavHost 实现 (NavHostFragment),可显示 Fragment 指标。
  • NavController:在 NavHost 中治理利用导航的对象。当用户在整个利用中挪动时,NavController 会安顿 NavHost 中指标内容的替换。

简略点 上面间接来操作一下 来体验一下Navigation 的应用流程

2.Navigation 应用入门

2.1 增加Navigation依赖

简略点 只须要设置 navigation-fragment 和 navigation-ui 即可

dependencies {  def nav_version = "2.4.2"  // Java language implementation  implementation "androidx.navigation:navigation-fragment:$nav_version"  implementation "androidx.navigation:navigation-ui:$nav_version"  // Kotlin  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"  // Feature module Support  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"  // Testing Navigation  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"  // Jetpack Compose Integration  implementation "androidx.navigation:navigation-compose:$nav_version"}
2.2 创立导航图

导航图是一种资源文件,其中蕴含您的所有目的地和操作。该图表会显示利用的所有导航门路。

向我的项目增加导航图,请执行以下操作:

  1. 在“Project”窗口中,右键点击 res 目录,而后顺次抉择 New > Android Resource File。此时零碎会显示 New Resource File 对话框。
  2. File name 字段中输出名称,例如“nav_graph”。
  3. Resource type 下拉列表中抉择 Navigation,而后点击 OK

当您增加首个导航图时,Android Studio 会在 res 目录内创立一个 navigation 资源目录。该目录蕴含您的导航图资源文件(例如 nav_graph.xml)。

新建实现后 就主动 在 res 上面生成 navigation目录,外面寄存下面新建的 导航图

2.3 导航图中增加目的地Fragment

点击下面的菜单 + 就能够新建 destination 了

新建了2个 fragment ,一个是 loginFragment 一个是 welcomeFragment

把他们两个连起来 从 loginFragment 到 welcomeFragment ,会主动生成一个 action

顺便略微丑化一下 loginFragment 和 welcomeFragment

2.4 Activity增加 NavHost

导航宿主NavHost 是 Navigation 组件的外围局部之一。导航宿主是一个空容器,用户在您的利用中导航时,目的地会在该容器中替换进出。

导航组件蕴含一个默认 NavHost 实现 (NavHostFragment

上面在MainActivity 中增加一个 NavHostFragment

拖入 Activity中 它会主动展现出可用的 Navigation Graph 导航图,就是下面创立的 my_nav_graph,抉择它即可

2.5 LoginFragment 代码编写
navController.navigate(R.id.action_loginFragment_to_welcomeFragment,bundle);

外围代码如下,就是获取 输出的用户名和明码 并且携带用户名 导航到 welcomeFragment

2.6 welcomeFragment 代码编写

很简略就是把 loginFragment 传入的参数 username 获取到 展现在TextView 上即可

留神:通过 getArguments() 去获取 Bundle 的参数

最终成果如下:

总结

本篇次要简略介绍了一下 Navigation 是什么 以及应用它的流程是什么,并且结合实际案例 操作了一番,Navigation 还有很多其余用法,如条件导航、嵌套图、适度动画 等等性能 有机会再操作

欢送大家拜访 集体博客 Johnny小屋