栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android Jetpack--Navigation

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android Jetpack--Navigation

文章目录

一.简介二.优劣势

2.1 优势2.2 劣势 三.使用

3.1 引入依赖3.2 创建三个fragment3.3 编写navigation xml跳转流程3.4 根据跳转流程编写跳转代码和传参3.5 将NavHostFragment放到activity中 四.Safe Args安全传值

4.1 配置4.2 传值4.3 接收传值

一.简介

Navigation是一个可简化的Android导航的库和插件,换句话说,通过可视化的方式来进行管理的。

二.优劣势 2.1 优势

处理Fragment的切换默认情况下正确处理Fragment的前进和后退为过渡和动画提供标准化的资源可以绑定Toolbar/BottomNavigationView/ActionBar等数据传递时提供类型安全性(使用SafeArgs)ViewModel支持 2.2 劣势

fragment切换后底层会调用replace方法导致会被不断销毁,无法保存上一次的状态 三.使用 3.1 引入依赖

dependencies {
  val nav_version = "2.4.0"

  // 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:2.5.0-alpha01")
}
3.2 创建三个fragment

这里创建三个fragment WelcomeFragment RegisterFragment LoginFragment
我们设想的是这样在welcomefragment中写两个按钮 第一个跳转到RegisterFragment ,第二个跳转到LoginFragment并传递参数

3.3 编写navigation xml跳转流程

首先创建navigation文件
在res目录右键选择new -> Android Resource File name自己设定 类型选择navigation

然后依据上面的设想我们编写了如下的navigation的代码


    
        
    
    
    
        
        
    

针对如上的代码进行参数的详解

名称含义
/文件必须以开头,以结尾,标识这是一个Navigation文件
app:startDestination默认的起始的fragment所对应的id,此处意味着WelcomeFragment作为起始的Fragment
Navigation所操作的都是Fragment
对应的Fragment的id
fragment完整路径
对应的fragment布局
对应的跳转动作
传参
传参的key
传参的默认值
传参类型
3.4 根据跳转流程编写跳转代码和传参

从welcomefragment跳转到registerfragment不需要传参

从welcomefragment到loginfragment需要传参

其中id就是我们在navigation文件中设置的fragment的id

3.5 将NavHostFragment放到activity中

最后一步就是NavHostFragment放到activity中
在activity的布局文件中添加





    


其中name是固定的
navGraph就是索引的3.3创建的navigation文件

四.Safe Args安全传值 4.1 配置

根部build中添加classpath

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.4.0"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

配置id

//java
plugins {
    id("androidx.navigation.safeargs")
}
//kotlin
plugins {
    id("androidx.navigation.safeargs.kotlin")
}

编写navigation文件中的传值标签

 
        
    

点击 Make Project

这样就在app-build-generated-source-navigation-args下生成了配置文件

4.2 传值
val name = RegisterFragmentArgs.Builder().setName("hahah").build().toBundle()
            findNavController().navigate(R.id.RegisterFragment,name)
4.3 接收传值
var bundle = arguments
        if (bundle != null) {
            val name = RegisterFragmentArgs.fromBundle(bundle).name
            text.setText(name)
        }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号