一分钟 由浅入深 学会Navigation

目录

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.mzph.cn/news/700851.shtml

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

相关文章

Linux——基础IO

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、C语言IO1、写文件2、读文件3、stdin & stdout & stderr 二、系统文件I/O1、写文件…

常用显示屏学习——LCD12864(含高级驱动程序)

LCD12864液晶显示屏 屏幕介绍 ① 可显示四行字符,每行可显示8个汉字或者16个数字和字母; ②可串行通信和并行通信; ③ 串口接口管脚信号 通信方法 (一)八位并行通信方法 (二)串行通信方法 用…

超实用,分享PostgreSQL和mysql的几点区别

前言 今天是元宵节,首先祝大伙元宵快乐!上一篇文章,给大家讲解了一下MySQL和PostgreSQL性能上的差别。这篇文章主要是记录一下日常应用中,两者常见的一些语法以及一些区别。 PostgreSQL的数据类型 数值类型 字符串类型 日期|时…

Linux--shell编程中分区表常用操作 全面且详细

文章中关于分区表常用操作目录: 一、概念 二、​​​​​​​创建分区表语法 ​​​​​​​三、创建一个表带多个分区 四、​​​​​​​加载数据到分区表中 五、加载数据到一个多分区的表中去 ​​​​​​​六、查看分区 七、​​​​​​​添加一个分区…

机器学习:逻辑回归原理

逻辑回归模型是一种广泛应用于分类问题的统计方法。尽管名为“回归”,但它实际上是一种分类算法,主要用于预测观察对象属于某个类别的概率。逻辑回归模型特别适用于二分类问题,但也可以通过一些策略扩展到多分类问题。 逻辑回归的应用与优化…

让C语言代码变抽象(二)

目录 前言: 代码: 前言: 在今天写代码的时候,我又想到一个更抽象的代码。 我在写注释的时候突然想想到条件编译的东西,好像也能用来注释东西。 代码: 我们在这直接上干货 我们知道在条件编译中有一个叫…

【前端素材】推荐优质后台管理系统Acara平台模板(附源码)

一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段,帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 后台管理系统是一种用于管理和控制网站、应用程序或系…

Map集合特点、遍历方式、TreeMap排序及Collections和Arrays

目录 ​编辑 一、集合框架 二、 Map集合 特点 遍历方式 HashMap与Hashtable的区别 TreeMap Collections Arrays 一、集合框架 二、 Map集合 Map集合是一种键值对的集合,其中每个键对应一个值。在Java中,Map接口定义了一种将键映射到值的数据结…

嵌入式学习-qt-Day3

嵌入式学习-qt-Day3 一、思维导图 二、作业 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳…

「Java开发指南」MyEclipse如何支持Spring Scaffolding?(三)

在上文中(点击这里回顾>>),主要为大家介绍了CRUD Scaffolding,本文将继续介绍应用程序的分层、代码助手等。 MyEclipse v2023.1.2离线版下载 3. 应用程序的分层 应用程序分层是应用程序开发领域中非常常见的体系结构方法…

C++之类作用域

目录 1、全局作用域 2、类作用域 2.1、设计模式之Pimpl 2.2、单例模式的自动释放 2.2.0、检测内存泄漏的工具valgrind 2.2.1、可以使用友元形式进行设计 2.2.2、内部类加静态数据成员形式 2.2.3、atexit方式进行 2.2.4、pthread_once形式 作用域可以分为类作用域、类名…

c++学习记录 STL基本概念

1、STL基本概念 STL(Standard Template Library,标准模板库)STL广义上分为:容器(container)算法(algorithm)迭代器(iterator)容器和算法之间通过迭代器进行无…

线程共享和非共享的资源及线程优缺点

注意:共享的内存地址空间中不包括栈;共享文件描述符表,表示,同一进程中线程可以操作同一文件。

猫头虎分享已解决Bug || TypeError: Cannot read property ‘props‘ of undefined (React)

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

c++的类型转换方法

一、静态类型转换(static_cast) 静态类型的转换主要用于基本类型之间的转换,比如int类型转换为double类型。但是static_cast也可以支持上下行的转换(存在继承关系之间的转换) 基本类型之间的转换举例 上下行转换的举…

金航标电子位于广西柳州鹿寨县天线生产基地于大年正月初九开工了!!!

金航标kinghelm(www.kinghelm.com.cn)总部位于中国深圳市,兼顾技术、成本、管理、效率和可持续发展。东莞塘厦实验室全电波暗室、网络分析仪、高低温测试柜等仪器设备齐全,可进行高低温、双85等测试,独立完成产品的检测…

数字化转型导师坚鹏:数据安全法解读与政府数字化转型

网络安全法、数据安全法、个人信息保护法解读与政府数字化转型 课程背景: 很多机构存在以下问题: 不清楚网络安全法、数据安全法、个人信息保护法立法背景? 不知道如何理解网络安全法、数据安全法、个人信息保护法政策? 不…

高级RAG:使用RAGAs + LlamaIndex进行RAG评估,包括原理、图和代码

原文地址:Using RAGAs LlamaIndex for RAG evaluation 2024 年 2 月 5 日 如果您已经为实际的业务系统开发了检索增强生成(Retrieval Augmented Generation, RAG)应用程序,那么您可能会关心它的有效性。换句话说,您…

Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具

下载地址: 链接:https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…

【前端素材】推荐优质后台管理系统Start Admin平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…