Android 导航之Navigation 组件的介绍与使用

news/2024/5/17 17:36:37/文章来源:https://blog.csdn.net/qq36246172/article/details/127955219

1、介绍:

        在以前的应用中,针对多导航模块的使用,常见的有tabhost或者FragmentTabHost,但是这些在使用的过程中,非常臃肿,包括加载和管理也不如人意。在AndroidX中,官方引入Navigation模块,通过布局绑定fragment来完成

       

 Navigation 是一个框架,用于在 Android 应用中的“目的地”之间导航,该框架提供一致的 API,无论目的地是作为 fragment、activity 还是其他组件实现。

Google开发者官方API

二、接入步骤

1、在布局中新增一个fragment的view

    <fragmentandroid:id="@+id/testfragment"android:layout_width="match_parent"android:layout_height="match_parent"android:name="androidx.navigation.fragment.NavHostFragment"app:defaultNavHost="true"app:navGraph="@navigation/nav_graph" />

name="androidx.navigation.fragment.NavHostFragment",固定写法,必须指向NavHostFragment

defaultNavHost:为true,设为默认host

navGraph:子fragment的配置路径

2、创建navigation(navGraph)

在res目录下新建navigation文件夹

 在gav_graph.xml下新增fragment节点,配置如下

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/nav_graph"app:startDestination="@id/fragment_one"><fragmentandroid:id="@+id/fragment_one"android:name="com.example.wiik.testdemo.fragment.OneFragment" /><fragmentandroid:id="@+id/fragment_two"android:name="com.example.wiik.testdemo.fragment.TwoFragment" /><fragmentandroid:id="@+id/fragment_three"android:name="com.example.wiik.testdemo.fragment.ThreeFragment" /></navigation>

如果你有几个fragment,就新增多少个

app:startDestination:默认一开始加载哪个fragment,就指向该fragment的id

fragment的顺序随意,不受限制。

3、如何在Activity或者Fragment中引用

我们是通过NavController 来管理

public static NavController findNavController(@NonNull Activity activity, @IdRes int viewId)

1,、activity: 当前的宿主

2、viewId:就是fragment的id,testfragment,将layout的fragment加载进来

3、var controll = Navigation.findNavController(this, R.id.testfragment) as                                 NavController;

这样,我们就初始化好一个控制器。

动态加载导航到指定的child fragment,该fragment必须已添加到navigation目录下xml文件中,也就是当前加载的列表

切换fragment:

controll?.navigate(R.id.fragment_one)

注意:这个id一定是graph加载的xml文件中的,否则报错找不到

动态切换navigation 目录下xml的配置文件

1.先读取
var gavpath=controll?.navInflater?.inflate(R.navigation.nav_graph)
2.再设置
controll?.graph=gavpath!!

 

备注:gavpath!!这种写法表示可为null,如果直接赋值,会提示错误。在变量后面加上 "!!"即可

添加item的切换监听:addOnDestinationChangedListener

controll?.addOnDestinationChangedListener {controller,destination,arguments->toast("${destination.displayName}")}

返回上一个fragment:

controll?.navigateUp

其他API可以自行研究

三、总结

想比较以往的tabhost加载,这种导航比较轻量化,我们可以根据业务需求,将不同的加进去,实现动态配置,也方便管理

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

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

相关文章

Spring | IOC技术之Bean的配置与实例化

&#x1f451; 博主简介&#xff1a;    &#x1f947; Java领域新星创作者    &#x1f947; 阿里云开发者社区专家博主、星级博主、技术博主 &#x1f91d; 交流社区&#xff1a;BoBooY&#xff08;优质编程学习笔记社区&#xff09; 文章目录Bean的基础配置1、id 与 cla…

Anaconda默认安装在C:\Users\xxx\.conda\envs中

目录 问题&#xff1a; 解决&#xff1a; 更改默认安装位置 移动已安装环境 问题&#xff1a; 解决&#xff1a; 更改默认安装位置 用记事本打开 C:\Users\zqk\.condarc 在最后插入 envs_dirs: - D://anzhuang//Anaconda3//envs 如若需更改pkgs&#xff0c;插入如下代…

OTA: Optimal Transport Assignment for Object Detection 原理与代码解读

paper&#xff1a;OTA: Optimal Transport Assignment for Object Detection code&#xff1a;https://github.com/Megvii-BaseDetection/OTA 背景 标签分配&#xff08;Label Assignment&#xff09;是目标检测中重要的一环&#xff0c;经典的标签分配策略采用预定义的规则…

Caffeine 源码、架构、原理(史上最全,10W字 超级长文)

文章很长&#xff0c;而且持续更新&#xff0c;建议收藏起来&#xff0c;慢慢读&#xff01;疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 &#xff1a; 免费赠送 :《尼恩Java面试宝典》 持续更新 史上最全 面试必备 2000页 面试必备 大厂必备 涨薪必备 免费赠送 经典…

【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(中——多态)。

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于Java面向对象三大特性——多态的文章&#xff0c;在本篇文章中我会分享多态的一些基础语法以及类在继承时代码的底层逻辑和执行顺序。 目录 多态的定义及实现条件 多态…

【程序人生】4年创作纪念日,不忘初心,继续前行

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

CleanMyMac X2022苹果电脑专业清理Mac加速器软件

CleanMyMac X2023最新免费版苹果电脑专业清理软件&#xff0c;对于Mac电脑用户来说&#xff0c;Cleanmymac X是一款再熟悉不过的电脑清理软件&#xff0c;它是由苹果认证并对外承认的一款第三方清理软件&#xff0c;几乎有95%的Mac用户都会安装并使用&#xff0c;Cleanmymac X究…

从一泡尿的工夫说起

大家好&#xff0c;我是校长。今天聊点不一样的&#xff0c;昨天读书的一点深刻感悟。大家有没有想过这么一个问题&#xff1a;如果没有记录时间的工具被发明&#xff0c;没有时钟&#xff0c;我们现在的生活会怎么样&#xff1f;在那个时钟尚未出现的日子里&#xff0c;如果确…

人工智能-机器学习-深度学习-概述

文章目录一&#xff1a;人工智能需要的基础和涉及内容二&#xff1a;数学基础&#xff08;1&#xff09;线性代数&#xff08;2&#xff09;概率论&#xff08;3&#xff09;数理统计&#xff08;4&#xff09;最优化方法&#xff08;5&#xff09;信息论三&#xff1a;机器学习…

虹科活动 | SWCF 2022卫星通信与仿真测试线上研讨会倒计时,快来报名吧!

您是否在因线下论坛的地点限制而错失技术干货分享&#xff1f;您是否因时间安排而无法亲临现场与行业专家交流&#xff1f;虹科举办全新线上论坛SWCF&#xff0c;与行业专家一起为您带来最新热点话题讨论与技术干货分享&#xff01; 什么是SWCF 虹科每年将开展卫星与无线通信…

计算机毕业设计之java+ssm网络硬硬盘系统网站

项目介绍 网盘&#xff0c;又称网络U盘、网络硬盘&#xff0c;是一些网络公司推出的在线存储服务。向用户提供文件的存储、访问、备份、共享等文件管理功能&#xff0c;使用起来十分方便。不花钱的移动硬盘。用户可以把网盘看成一个放在网络上的硬盘或U盘&#xff0c;不管你是…

量子计算(十):量子计算原理

文章目录 量子计算原理 一、酉变换 二、矩阵的指数函数 三、单位矩阵 四、单量子比特逻辑门 五、泡利矩阵 六、常见逻辑门 量子计算原理 经典计算中&#xff0c;最基本的单元是比特&#xff0c;而最基本的控制模式是逻辑门&#xff0c;可以通过逻辑门的组合来达到控制电…

如何做好风险管控,杜绝项目风险突然爆发?

软件开发最怕临近交付期&#xff0c;项目风险突然爆发。那么如何做好风险管理&#xff0c;提前排除隐患&#xff1f; 1、提前规划开发风险的科学管理与控制流程 项目需建立自己的组织级别风险资产库&#xff0c;并在开发过程中&#xff0c;不断地更新和完善。并对项目风险进行科…

Java搭建宝塔部署实战毕设项目springboot车险理赔管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的毕业设计项目springboot车险理赔管理系统源码。 技术架构 技术框架&#xff1a;SpringBoot mybatis bootstrap jquery mysql5.7运行环境&#xff1a;jdk8 nginx1.20 tomcat9 …

Spring IoC依赖注入-6

1. 依赖注入的模式和模型: Spring 提供了哪些依赖注入的模式和类型? 手动模式 - 配置或者编程的方式&#xff0c;提前安排注入规则 XML资源配置元信息Java 注解配置元信息API 配置元信息 自动模式 - 实现方提供依赖自动关联的方式&#xff0c;按照内建的注入规则 Autowiring …

VisDrone数据集之集群检测(一)

VisDrone坐标信息 VisDrone数据集格式: txt标签内容为&#xff1a;bbox_left&#xff0c;bbox_top&#xff0c;bbox_width&#xff0c;bbox_height&#xff0c;score,object_category&#xff0c;truncation&#xff0c;occlusion 类别&#xff1a; ignored regions(0), pede…

[附源码]计算机毕业设计springboot绿色生鲜

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

aws eks 日志和监控配置

资料 Kubernetes Logging powered by AWS for Fluent Bithttps://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html如何在 Amazon EKS 中将容器日志流式传输到 CloudWatch&#xff1f;, eks日志 使用fluentbit发送日志到…

PX4代码解析(6)

一、前言 上一节介绍了PX4姿态估计调用函数的流程&#xff0c;这一节分享一下我对PX4姿态解算的解读.首先&#xff0c;要理解PX4姿态解算的程序&#xff0c;要先从传感器的特性入手&#xff0c;这里主要介绍的传感器有加速度计&#xff0c;磁力计&#xff0c;陀螺仪. 二、传感…

2022最新1w字MySQL索引面试题(附md文档)

小熊学Java个人网站&#xff1a;https://javaxiaobear.gitee.io/&#xff0c;每周持续更新干货&#xff0c;建议收藏&#xff01; 1、Mysql如何实现的索引机制&#xff1f; MySQL中索引分三类&#xff1a;B树索引、Hash索引、全文索引 2、InnoDB索引与MyISAM索引实现的区别是什…