• Android Jetpack Navigation基本使用


    Android Jetpack Navigation基本使用

    本篇主要介绍一下 Android Jetpack 组件 Navigation 导航组件的 基本使用

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

    image-20220615130550772

    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)。

    image-20220615123057359

    新建完成后 就自动 在 res 下面生成 navigation目录,里面存放上面新建的 导航图

    image-20220615123159726

    2.3 导航图中添加目的地Fragment

    点击上面的菜单 + 就可以新建 destination 了

    image-20220615123452177

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

    image-20220615123539595

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

    image-20220615125955970

    顺便稍微美化一下 loginFragment 和 welcomeFragment

    image-20220615130550772

    2.4 Activity添加 NavHost

    导航宿主NavHost 是 Navigation 组件的核心部分之一。导航宿主是一个空容器,用户在您的应用中导航时,目的地会在该容器中交换进出。

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

    下面在MainActivity 中添加一个 NavHostFragment

    image-20220615131058193

    拖入 Activity中 它会自动展示出可用的 Navigation Graph 导航图,就是上面创建的 my_nav_graph,选择它即可

    image-20220615131127332

    2.5 LoginFragment 代码编写

    navController.navigate(R.id.action_loginFragment_to_welcomeFragment,bundle);
    

    核心代码如下,就是获取 输入的用户名和密码 并且携带用户名 导航到 welcomeFragment

    image-20220615132726582

    2.6 welcomeFragment 代码编写

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

    注意:通过 getArguments() 去获取 Bundle 的参数

    image-20220615132852072

    最终效果如下:

    QQ20220615-134219-HD

    总结

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

    欢迎大家访问 个人博客 Johnny小屋

  • 相关阅读:
    微信小程序Day2笔记
    【智能优化算法-蒲公英优化器】基于蒲公英优化器求解单目标优化问题附matlab代码
    Oracle 清空/删除数据库全部的表
    Docker-compose教程(安装,使用, 快速入门)
    阿里云短信服务
    JVM学习三
    人机环境系统智能需要新的逻辑和数学体系
    青少年python系列 40.面向对象-类
    Luby控制器从哪里购买
    QT数据库,实现数据库增删改查
  • 原文地址:https://www.cnblogs.com/askajohnny/p/16378870.html