一分钟 由浅入深 学会Navigation

2024-02-25 01:12

本文主要是介绍一分钟 由浅入深 学会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统一,数据即使共享的

这篇关于一分钟 由浅入深 学会Navigation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/743982

相关文章

为何我建议你学会抄代码?

文章目录 为何我建议你学会抄代码?一、引言二、抄代码的艺术1、理解抄代码的真正含义1.1、抄代码的好处 2、如何有效地抄代码2.1、发现问题2.2、整理需求2.3、造轮子标准流程 三、抄代码的实践案例1、发现问题2、整理需求3、设计重试机制4、实现重试工具类5、使用重试工具类6、优化和扩展 四、总结 为何我建议你学会抄代码? 一、引言 在编程的世界中,“抄代码” 常被视为一

Web Navigation POJ 1028 栈操作

模拟平时上网打开网页的操作,值得注意的是,如果BACK回一个网页之后进行VISIT操作,之前的网页FORWARD都回不去了 #include<cstdio>#include<cstring>#include<iostream>#include<stack>using namespace std;#define MAXD 20#define MAX_SIZE 100 + 10co

上海市计算机学会竞赛平台2024年7月月赛丙组求和问题

题目描述 给定 nn 个整数 a1,a2,…,ana1​,a2​,…,an​,请问这个序列最长有多少长的前缀,满足元素的和大于或等于 00?如果任何长度大于 00 的前缀之和都为负数,则输出 00 输入格式 第一行:单个整数表示 nn第二行:nn 个整数表示 a1,a2,…,ana1​,a2​,…,an​ 输出格式 单个整数:表示最长的前缀长度,使得前缀的和大于等于 00 数据范围

上海市计算机学会竞赛平台2024年8月月赛丙组等差数列的素性

题目描述 给定三个整数 nn,aa 与 dd,表示一个项数为 nn 的等差数列,首项为 aa,公差为 dd。 请统计,从这个等差数列中有多少数字是素数 输入格式 三个整数: nn,aa 与 dd 输出格式 单个整数:表示素数数量 数据范围 50%50% 的数据,1≤n≤10001≤n≤1000100%100% 的数据,1≤n≤100001≤n≤100001≤d≤10001≤d≤10

【数据结构】你真的学会了二叉树了吗,来做一做二叉树的算法题及选择题

文章目录 1. 二叉树算法题1.1 单值二叉树1.2 相同的树1.3 另一棵树的子树1.4 二叉树的遍历1.5 二叉树的构建及遍历 2. 二叉树选择题3. 结语 1. 二叉树算法题 1.1 单值二叉树 https://leetcode.cn/problems/univalued-binary-tree/description/ 1.2 相同的树 https://leet

一分钟搞定月考成绩群发给家长!

Hey亲们,月考又来啦!老师们又在头疼怎么快速又准确地把成绩发给每位家长吗?别担心,我来给你们安利一个超好用的工具——易查分小程序! 老师们只需要三步,就能轻松搞定成绩发布: 1.登录易查分主页,点击“新建查询”。 2.上传包含学生信息的电子表格,比如姓名、学号等。 3.设置查询条件,比如通过学号和姓名查询,然后点击发布。 噔噔噔噔~一个专属的查询二维码就生成啦!把这

学会这2招,让你轻松提取长视频中的文案!

在当今数字化时代,短视频已成为备受欢迎的内容形式,众多品牌和营销人员借助短视频推广宣传产品。 短视频文案作为短视频内容的关键部分,能够在极短时间内向受众传达品牌信息和产品特点。 不过,短视频文案的提取和创作确实极具挑战。鉴于此,利用工具提取短视频文案成为必要手段。 在本文中,我们将介绍两种常见的用工具来提取短视频文案的方法,并提供详细的操作步骤和建议,以助力您更好地利用这些工具,提升短视频文

Avoided redundant navigation to current location: 路由相同报错

vue-router有一个内置保护机制,它会阻止不必要的重复导航,以提高性能并避免不必要的计算。 具体来说,错误信息中的就是试图访问的路径时,应用程序已经在当前这个路径上。因此,vue-router检测到了这个重复的导航请求,就发出了警告。 通常情况下,这种警告并不需要特别处理,因为这只是一个优化措施,防止不必要的导航。但是如果你频繁遇到这种情况,可能需要检查触发导航的部分代码逻辑是否有必要进

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 9月6日,星期五

每天一分钟,知晓天下事! 2024年9月6日 星期五 农历八月初四 1、 “摩羯”加强为17级超强台风,6日广东深圳、珠海、湛江等多地全市停课。 2、 两部门:事业单位不得自行制定面向特定人员的专项招聘、加分等倾斜政策。 3、 央行:降准还有一定空间;存贷款利率进一步下行面临一定约束。 4、 我国天问三号任务计划2028年前后实施两次发射任务,实现火星样品返回地球。 5、 山东、四川、吉

10分钟学会BPMN,助力高效业务流程管理!

在当今数字化时代,企业对于高效的业务流程管理需求日益增长,BPMN作为一种广泛应用的业务流程建模标准,与在线绘图工具 ProcessOn 相结合,为企业提供了强大的流程管理解决方案。 一、BPMN 概述 BPMN 是一种用于业务流程建模的图形化标准,它提供了一套直观、易懂的符号和语法,使得业务流程可以被清晰地表示和理解。BPMN 的主要目的是为了促进业务流程的可视化、分析和优化,提高业务流程的