HarmonyOS开发-鸿蒙UiAbility 组件间跳转

前言

随着春节假期结束各行各业复产复工,一年一度的春招也持续火热起来。最近,有招聘平台发布了《2024年春招市场行情周报(第一期)》。总体来说今年的就业市场还是人才饱和的状态,竞争会比较激烈。

但是,通过报告我们也能看到让人眼前一亮的信息,比如华为鸿蒙系统对应的人才市场就呈现出“供需两旺”的场景。

不久前华为已经宣布全新HarmonyOS NEXT 鸿蒙星河版将在今年秋天正式和消费者见面,并已经面向开发者开放申请。鸿蒙星河版会有更智能、更极致的原生体验,也标志着鸿蒙迈向其发展的第二阶段。

因此,对于鸿蒙生态建设而言,2024年可谓至关重要,而生态建设的前提,就是要有足够的开发人才。与之对应的,今年春招市场上与鸿蒙相关岗位和人才旺盛的热度,一方面反应了鸿蒙生态的逐渐壮大,另一方面也让人们对鸿蒙下一阶段的发展更具信心。

今天就来跟大家说一说鸿蒙UiAbility 组件间跳转问题

启动应用内的UIAbility :即UiAbility 组件间跳转、交互包括:

一、 同一个模块

●新建一个UIAbility:TestAbility.ts

微信图片_20240102140422.png

●在 modlue.json5中 abilities中添加TestAbility

微信图片_20240102140635.png

import common from '@ohos.app.ability.common'const TAG = "huxiubo" @Entry @Component struct Index {   @State message: string = 'Hello World'   private  context = getContext(this) as common.UIAbilityContext   private  MyNumber: number   private  MyNString: string;// hello = globalThis.hello   eventHub() {this.context.eventHub.emit("event", 1, "huxiubo", "sulijing")this.MyNString = globalThis.MyNStringthis.MyNumber = globalThis.MyNumberconsole.info(TAG, `MyNString, ${ this.MyNString}`);console.info(TAG, `MyNumber, ${ this.MyNumber}`);   }startOtherAbility() {console.info(TAG, `startOtherAbility`);let want = {deviceId: '', // deviceId为空表示本设备bundleName: 'com.example.myapplication',abilityName: 'TestAbility',}try {this.context.startAbility(want).then(() => {console.info(TAG, `startAbility Success`);}).catch((err) => {console.info(TAG, `Failed: ${JSON.stringify(err)}}`);})} catch (error) {console.log("startAbility error: " + error)}   }   build() {Row() {Column() {Text("enter Ability").fontSize(50).fontWeight(FontWeight.Bold).onClick(()=>{this.startOtherAbility()})}.width('100%')}.height('100%')   } }

二、不同模块

1、新建一个模块:右击项目 new->module , 填入 模块名称 modele1

微信图片_20240102142511.png

●2、跳转代码

import common from '@ohos.app.ability.common'const TAG = "huxiubo" @Entry @Component struct Index {   @State message: string = 'Hello World'   private  context = getContext(this) as common.UIAbilityContext   private  MyNumber: number   private  MyNString: string;// hello = globalThis.hello   eventHub() {this.context.eventHub.emit("event", 1, "huxiubo", "sulijing")this.MyNString = globalThis.MyNStringthis.MyNumber = globalThis.MyNumberconsole.info(TAG, `MyNString, ${ this.MyNString}`);console.info(TAG, `MyNumber, ${ this.MyNumber}`);   }startOtherAbility() {console.info(TAG, `startOtherAbility`);let want = {deviceId: '', // deviceId为空表示本设备bundleName: 'com.example.myapplication',abilityName: 'Module1Ability',moduleName: 'module1', // moduleName非必选// parameters: { // 自定义信息//   instanceKey: ge(),// },}try {this.context.startAbility(want).then(() => {console.info(TAG, `startAbility Success`);}).catch((err) => {console.info(TAG, `Failed: ${JSON.stringify(err)}}`);})} catch (error) {console.log("startAbility error: " + error)}   }   build() {Row() {Column() {Text("enter Ability").fontSize(50).fontWeight(FontWeight.Bold).onClick(()=>{this.startOtherAbility()})}.width('100%')}.height('100%')   } }

注意 want,一定要写正确

 let want = {deviceId: '', // deviceId为空表示本设备bundleName: 'com.example.myapplication',abilityName: 'Module1Ability',moduleName: 'module1', // moduleName非必选}

编译运行代码,发现 {“code”:16000001}}

●3 错误代码:1600001,表示未找到,困扰好久,解决办法如下
菜单栏 Run->edit configureation, 选择entry,Deploy Multi Hap,选中 Deploy Multil Hap Packages,添加模块
在这里插入图片描述

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。随着鸿蒙的不断发展以及国家的大力支持,未来鸿蒙职位肯定会迎来一个大的爆发,只有积极应对变化,不断学习和提升自己,我们才能在这个变革的时代中立于不败之地。

在这里插入图片描述

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

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

相关文章

Unity编辑器扩展,快捷键的使用

代码部分 编辑器界面 使用方法: 使用方法和如图1一样,只需要在Menuitem的路径后面加上标识符号就行。 "#"对应的是shift "&"对应的是Alt "%"对应的是ctrl 比如我图中的是,%#s对应的是CtrlShifts&…

确保数据完整性:使用 @NotNull 和 @NotBlank 注解

在 Java 应用程序中,数据验证是确保数据质量和应用稳定性的关键步骤。特别是在处理用户输入或持久化数据到数据库时,合适的数据验证策略能够预防错误数据的录入,提高系统的健壮性。本文将探讨两个常用的数据验证注解:NotNull 和 N…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的MTE

安全之安全(security)博客目录导读 ARM架构参考手册定义了在实现RME时对内存标记扩展(FEAT_MTE)所需的更改。内存标记使用分配标签(Allocation Tags),可以为系统中的正常内存位置分配这些标签。存储分配标签的一种实现…

基于51单片机的串口乒乓球小游戏

基于51单片机的乒乓球小游戏 (仿真+程序) 功能介绍 具体功能: 1.用两块单片机串口进行通信; 2.一排LED模拟乒乓球运动(哪里亮表示运动到哪); 3.当最左边LED亮,表示球…

【java、lucene、python】互联网搜索引擎课程报告二:建立搜索引擎

一、项目要求 建立并实现文本搜索功能 对经过预处理后的500个英文和中文文档/网页建立搜索并实现搜索功能对文档建立索引,然后通过前台界面或者已提供的界面,输入关键字,展示搜索结果前台可通过网页形式、应用程序形式、或者利用已有的界面…

程序员具备的职业素养(个人见解)

程序员应该有什么职业素养? 1. 技术能力 毫无疑问,优秀的技术是程序员的必备。 -扎实的编程基础:熟练掌握至少一门编程语言,并理解基本的数据结构和算法,要做到精通!。 - 广泛的技术知识:了…

Databricks Data Warehouse

Warehouse features 原来的data warehouse痛点: 用例不兼容的支持模型的安全和管理不兼容不相交和重复的数据 ETL workloads Streaming Architecture Data Science and ML

matplotlib 动态显示训练过程中的数据和模型的决策边界

文章目录 Github官网文档简介动态显示训练过程中的数据和模型的决策边界安装源码 Github https://github.com/matplotlib/matplotlib 官网 https://matplotlib.org/stable/ 文档 https://matplotlib.org/stable/api/index.html 简介 matplotlib 是 Python 中最常用的绘图…

ghidra

https://github.com/NationalSecurityAgency/ghidra ghidra是一个so的逆向工具,功能和jadx-gui类似,但是和jadx-gui专注于java层的不同,ghidra专注于native层的代码反编译(从二进制到c语言)。 一、 安装 准备好java1…

解释一下I/O多路复用模型?

想象一下,你是一家小餐馆的老板,你的工作是接收顾客的订单,然后通知厨师开始准备。如果每次只能等一个顾客点完菜再接待下一个,那效率就太低了,顾客可能要等很久。 现在,有一种聪明的做法叫做“I/O多路复用…

js理解异步编程和回调

什么是异步 计算机在设计上是异步的。 异步意味着事情可以独立于主程序流发生。 当你打开一个网页,网页载入的过程,你又打开了编译器,那么你在网页载入时启动了编译器的行为就是计算机的异步, 可以看出计算机时一个超大的异步…

华为防火墙 1

华为防火墙1 实验拓扑: 实验步骤: 1.完成终端基本IP信息配置 2.配置防火墙: 2.1配置IP地址 sys Enter system view, return user view with CtrlZ. [USG6000V1]undo in e Info: Saving log files… Info: Information center is disabled. […

《科学,无尽的前沿》—— 程序员必读

一、总体概述 《科学,无尽的前沿》(Science The Endless Frontier)开创了大政治推动下的大科学工程新范式,被视为“美国科学政策的开山之作,促成了支持科学的“美国战后共识”,是“美国历史上最具影响力的政策文件之一”。 报告…

场内基金和场外基金的区别

场内基金就是只能在场内买卖的基金,只有股票账户才能买。场外就是在场内以外的交易场所买卖的基金。 场内基金和场外基金区别主要是费用和买卖价格。 场内基金和场外基金都有管理费和托管费。二者不同的主要是交易费用。场内基金买卖都要交交易费用,这…

基于小波脊线的一维时间序列信号分解方法(MATLAB R2018A)

信号分解技术是把一个复杂信号分解为若干含有时频信息的简单信号,研可通过分解后的简单信号来读取和分析复杂信号的有效特征。因此,信号分解技术对分析结果的影响是不言而喻的。 傅里叶分解是早期常用的信号分解方法,最初被用于分析热过程&a…

心链7 ----Redis的引入和实现以及缓存和定时任务应用

心链 — 伙伴匹配系统 Redis 数据查询慢怎么办? 用缓存:提前把数据取出来保存好(通常保存到读写更快的介质,比如内存),就可以更快地读写。 缓存 Redis(分布式缓存)memcached&…

JavaScript基础(十二)

截取字符串 //对象名.toLowerCase();将字符串转为小写 var strLAOWANG; strstr.toLowerCase(); console.log(str); //对象名.toUpperCase();将字符串转为大写 var str1laowang str1str1.toUpperCase(); console.log(str1); 截取字符串 //方法1:对象名.substr(a,b); …

Unity世界坐标下UI始终朝向摄像机

Unity世界坐标下UI始终朝向摄像机 1、第一种方法UI会反过来 void Update(){this.transform.LookAt(Camera.main.transform.position);}2、第二种方法 Transform m_Camera;void Start(){m_Camera Camera.main.transform;}void LateUpdate(){transform.rotation Quaternion.Lo…

kafka-生产者事务-数据传递语义事务介绍事务消息发送(SpringBoot整合Kafka)

文章目录 1、kafka数据传递语义2、kafka生产者事务3、事务消息发送3.1、application.yml配置3.2、创建生产者监听器3.3、创建生产者拦截器3.4、发送消息测试3.5、使用Java代码创建主题分区副本3.6、屏蔽 kafka debug 日志 logback.xml3.7、引入spring-kafka依赖3.8、控制台日志…

.shape 和 .size的区别

在 Python 中,尤其是使用 numpy 和 torch 库进行数组和张量操作时,.shape 和 .size() 是两个非常常见的方法。虽然它们有时可以互换使用,但它们确实有一些细微的区别。 .shape 属性 类型:.shape 是一个属性。返回值:…