一分钟 由浅入深 学会Navigation

news2024/9/22 21:17:17

目录

1.官网正式概念

1.1 初认知

2.导入依赖

2.1 使用navigation

2.2 safe Args插件-> 传递数据时用

3.使用Navigation

3.1 搭建初始框架

3.2 确定action箭头的属性

3.3 为Activity添加NavHostFragment控件

3.4 NavController 管理应用导航的对象

3.5 数据传递(单向)

3.5.1 最简单,也是Navigation自带的Bundle

3.5.2 safe Args插件

3.6 数据实时共享(双向,简略提及)


1.官网正式概念

1.1 初认知

大白话来讲:就是控制多fragment直接的切换,其中涉及数据的传递与更新,动画和内存堆栈,也需要了解Fragment的生命周期

2.导入依赖

2.1 使用navigation

dependencies {
        implementation("androidx.navigation:navigation-fragment-ktx:2.6.0")
        implementation("androidx.navigation:navigation-ui-ktx:2.6.0")

}

2.2 safe Args插件-> 传递数据时用

plugins {
    id("androidx.navigation.safeargs.kotlin")
    id ("kotlin-android-extensions")
}
plugins {
    id("androidx.navigation.safeargs") version "2.6.0" apply false
}

看晕了? :结合下图依次加上集成环境

3.使用Navigation

3.1 搭建初始框架

新建Android Resource Directory, type选择navigation

在Navigation Resource File确定fragment间导航关系

箭头是直接从一个fragment拖动到另一个点连接的,代表有一个action_from箭头尾_to头部

3.2 确定action箭头的属性

1.设置动画

enterAnim: 跳转时的目标页面动画

exitAnim: 跳转时的原页面动画

popEnterAnim: 回退时的目标页面动画

popExitAnim:回退时的原页面动画
2.传递的变量的默认值——》这个要在Fragment先设置接收,才有此属性

3.栈管理

popUpTo  :手动弹栈,将选定fragment,在栈钟上方的所有全部弹出

popUpInclusive:  默认false,    选中ture代表popUpTo时包括选定的fagment一起弹出栈

  这里假设 导航为 A->B->C->A

lauchSingleTop :  若此为ture, 跳转到的Fragment与栈顶相同,则复用栈顶Fragment

3.3 为Activity添加NavHostFragment控件

注意navGraph一定要正确         

3.4 NavController 管理应用导航的对象

一般在Fragment切换就行

切换方法:(这里action即是  目录3.2  的内容)

3.5 数据传递(单向)

3.5.1 最简单,也是Navigation自带的Bundle

 val navController = Navigation.findNavController(it)
        val bundle = Bundle()
        bundle.putString("key", "test")
        navController.navigate(R.id.action_fragmentA_to_fragmentB2, bundle)

接收

arguments?.getString("数据的key")

3.5.2 safe Args插件

这个需要添加插件  -》 详细参考 本文目录  2.2 

当传递数据为自定义类 -》还需要序列化接口

id 'kotlin-parcelize'

在nav_graph中   接收数据的Fragment 的Argument中 设置接受数据名字,类型和默认值

如Fragment_A  ->  Fragment_B 就是将数据当参数传入action

binding.ivAdd.setOnClickListener {
    val action = HomeFragmentDirections.actionHomeFragmentToDrawFragment(User("zhoujun"))
    findNavController().navigate(action)
}

接收数据

arguments.getString(数据的key)
arguments.getParcelable(数据的key)

3.6 数据实时共享(双向,简略提及)

自定义ViewModel类和属性

封装供外界修改数据的方法

作用:把所有viewModel统一,数据即使共享的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1468184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode单调栈

739. 每日温度 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures [73, …

基于SpringBoot的停车场管理系统

基于SpringBootVue的停车场管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台首页 停车位 个人中心 管理员界面 摘要 摘要:随着城市化进程的…

基于django的购物商城系统

摘要 本文介绍了基于Django框架开发的购物商城系统。随着电子商务的兴起,购物商城系统成为了许多企业和个人创业者的首选。Django作为一个高效、稳定且易于扩展的Python web框架,为开发者提供了便捷的开发环境和丰富的功能模块,使得开发购物商…

Java零基础 - 条件运算符

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

Vue(学习笔记)

什么是Vue Vue是一套构建用户界面的渐进式框架 构建用户界面: 基于数据渲染出用户可以看到的界面 渐进式: 所谓渐进式就是循序渐进,不一定非得把Vue中的所有API都学完才能开发Vue,可以学一点开发一点 创建Vue实例 比如就上面…

k8s学习笔记-基础概念

(作者:陈玓玏) deployment特别的地方在于replica和selector,docker根据镜像起容器,pod控制容器,job、cronjob、deployment控制pod,job做离线任务,pod大多一次性的,cronj…

汽车常识网:电脑主机如何算功率的计算方法?

今天汽车知识网就给大家讲解一下如何计算一台主机的功率。 它还会解释如何计算计算机主机所需的功率? ? (如何计算电脑主机所需的功率)进行说明。 如果它恰好解决了您现在面临的问题,请不要忘记关注本站。 让我们现在就…

vue3 vite 经纬度逆地址解析

在web端测试经纬度逆地址解析有2中方式,先准备好两个应用key 第一种,使用“浏览器端”应用类型 const address ref() const latitude ref() // 经度 const longitude ref() // 纬度 const ak 你的key // 浏览器端 function getAddressWeb() {// 创建…

【读博杂记】:近期日常240223

近期日常 最近莫名其妙,小导悄悄卷起来,说要早上八点半开始打卡,我感觉这是要针对我们在学校住的,想让我们自己妥协来这边租房子住,但我感觉这是在逼我养成规律作息啊!现在基本上就是6~7点撤退,…

【Spring】 AOP面向切面编程

文章目录 AOP是什么?一、AOP术语名词介绍二、Spring AOP框架介绍和关系梳理三、Spring AOP基于注解方式实现和细节3.1 Spring AOP底层技术组成3.2 初步实现3.3 获取通知细节信息3.4 切点表达式语法3.5 重用(提取)切点表达式3.6 环绕通知3.7 切…

R语言入门笔记2.6

描述统计 分类数据与顺序数据的图表展示 为了下面代码便于看出颜色参数所对应的值,在这里先集中介绍, col1是黑色,2是粉红,3是绿色,4是天蓝,5是浅蓝,6是紫红,7是黄色,…

前沿科技速递——YOLOv9

随着YOLO系列的不断迭代更新,前几天,YOLO系列也迎来了第九个大型号的更新!YOLOv9正式推出了!附上原论文链接。 arxiv.org/pdf/2402.13616.pdf 同样是使用MS COCO数据集进行对比比较,通过折线图可看出AP曲线在全方面都…

一、系统架构师考试介绍

一、系统架构设计师介绍 系统架构设计师在软考体系中,属于高级资格。(不需要先考中级可以直接报考高级,我之前不知道还考了软件设计师T.T不如当初直接考系统架构师) 考试时间: 每年11月份的第二个周六 报名方式: 网上报名 报名网址 http://wwwruankao.…

C++常见问题

C常见问题 引用模板STLvector原理移动语义与右值引用New delete与malloc freeinlineconststaticexplicit 的作用lambda 表达式友元public、protected、private的区别封装继承多态虚函数重载、重写、隐藏的区别智能指针C 11新特性深拷贝与浅拷贝虚拟内存内存对齐及内存泄漏C内存…

解决ubuntu系统cannot find -lc++abi: No such file or directory

随着CentOS的没落,使用ubuntu的越来越多,而且国外貌似也比较流行使用ubuntu,像LLVM/Clang就有专门针对ubuntu编译二进制发布文件: ubuntu本身也可以直接通过apt install命令来安装编译好的clang编译器。不过目前22.04版本下最高…

【尚硅谷】MybatisPlus 学习笔记(下)

目录 六、插件 6.1、分页插件 6.1.1、添加配置类 6.1.2、测试 6.2、xml自定义分页 6.2.1、UserMapper中定义接口方法 6.2.2、UserMapper.xml中编写SQL 6.2.3、测试 6.3、乐观锁 6.3.1、场景 6.3.2、乐观锁与悲观锁 6.3.3、模拟修改冲突 数据库中增加商品表 添加数…

防御保护---防火墙的病毒防御

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.防病毒网关(AV)概述 防火墙的防病毒网关(AV)是一种网络安全设备,用于检测和阻止恶意软件(如病毒、蠕虫、木马等&#x…

pclpy 半径滤波实现

pclpy 半径滤波实现 一、算法原理背景 二、代码1.pclpy 官方给与RadiusOutlierRemoval2.手写的半径滤波(速度太慢了,用官方的吧) 三、结果1.左边为原始点云,右边为半径滤波后点云 四、相关数据 一、算法原理 背景 RadiusOutlier…

Javaweb之SpringBootWeb案例之AOP案例的详细解析

4. AOP案例 SpringAOP的相关知识我们就已经全部学习完毕了。最后我们要通过一个案例来对AOP进行一个综合的应用。 4.1 需求 需求:将案例中增、删、改相关接口的操作日志记录到数据库表中 就是当访问部门管理和员工管理当中的增、删、改相关功能接口时&#xff0c…

08 Redis之集群的搭建和复制原理+哨兵机制+CAP定理+Raft算法

5 Redis 集群 2.8版本之前, Redis采用主从集群模式. 实现了数据备份和读写分离 2.8版本之后, Redis采用Sentinel哨兵集群模式 , 实现了集群的高可用 5.1 主从集群搭建 首先, 基本所有系统 , “读” 的压力都大于 “写” 的压力 Redis 的主从集群是一个“一主多从”的读写分…