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

news2024/12/25 15:43:30

前言

随着春节假期结束各行各业复产复工,一年一度的春招也持续火热起来。最近,有招聘平台发布了《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.MyNString
   this.MyNumber = globalThis.MyNumber
   console.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.MyNString
    this.MyNumber = globalThis.MyNumber
    console.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.coloradmin.cn/o/1798325.html

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

相关文章

【网络基础1】

文章目录 学习目标一、网络基础11.网络的重要性2.osi7层模式3.协议和osi7层模型的关系4.数据的封装和解封装5.tcp的三次握手6.Ddos攻击讲解7.Tcp的四次挥手 二、网络基础21.文字编码2.IP地址的划分3.子网掩码4.同网段ip才能直接通信5.DNS解析6.DNS解析命令7.短域名为什么值钱8.…

HTTP --tcp和keep-alive

TCP TCP连接 tcp/ip是全球计算机以及网络设备都在使用的一种常见的分组交换网络分层协议集,客户端可以打开一条tcp/ip连接,连接到可能运行在世界各地的服务器应用程序,一旦连接建立起来了,在客户端和服务器的计算机之间交换的报…

Unity 资源 之 风格化地形纹理(Stylized Terrain Textures)免费领取

风格化地形纹理:Stylized Terrain Textures 前言资源包内容领取兑换码 前言 亲爱的 Unity 游戏开发者们,我们自豪地为大家推荐最新的每周免费资源:风格化地形纹理!这些令人惊叹的纹理将为你的游戏世界带来独特而引人入胜的视觉体…

Ambari集成Apache Kyuubi实践

目前还有很多公司基于HDP来构建自己的大数据平台,随着Apache Kyuubi的持续热度,如何基于原有的HDP产品来集成Apache Kyuubi,很多人都迫切的需求。集成Apache Kyuubi到HDP中,主要涉及Ambari的二次开发。本文详细叙述了集成Apache K…

老师怎么发期末成绩?

期末成绩发放,可是每个学期的重头戏,老师们,你们怎样安全、高效的传达成绩?别急,今天就来聊聊这个问题。 先来个小调查:各位老师们都是怎么发成绩的?是传统的纸质成绩单,还是电子邮件…

IngsollRang伺服拧紧轴控制器维修故障排查

【IngsollRang控制器故障排查】 在开始维修之前,请确保拧紧机已关闭并断开电源。然后,按照以下步骤进行故障排查: 1. 检查电源连接:确保拧紧机的电源线牢固连接,且电源插座正常工作。 2. 检查保险丝:如果电…

SmartEDA赋能学校教育:电子设计学习新篇章,让梦想触手可及!

在数字化时代,电子设计已成为科技创新的重要驱动力。然而,对于许多初学者和在校学生来说,电子设计的学习过程往往充满了挑战和困惑。幸运的是,随着SmartEDA的出现,这一局面正在发生深刻改变。SmartEDA不仅简化了电子设…

期末成绩怎么单独发给家长

想知道如何让成绩查询变得简单又安全吗?跟着我,带你发现一个让家长和老师都省心的神器! 传统的成绩发布方式,一张张成绩单,一封封邮件,或是一条条短信,这些方法虽然有效,但效率不高&…

如何利用51建模网,在跨境独立站内实现商品3D模型嵌入展示?

跨境电商卖家如何在自己的独立站上嵌入商品3D模型?利用51建模网的Web3D展示技术和内嵌功能,即可实现商品3D模型嵌入,全方位的720立体交互展示,为消费者带来沉浸式的购物体验,显著提升消费者的参与度和网页访问时长。 具…

随到随学|2024泰迪智能科技暑期在线项目/集训营

在数字化转型的浪潮中,大数据和人工智能等前沿技术已成为推动经济发展和科技进步的关键动力。当前,全球各行各业都在积极推进数字化转型,不仅为经济增长注入新活力,也对人才市场结构产生了深刻影响,尤其是对数字化人才…

【优化过往代码】关于vue自定义事件的运用

【优化过往代码】关于vue自定义事件的运用 需求说明过往代码优化思路优化后代码(Vue2)遇到问题记录 Vue2官方自定义指令说明文档 Vue3官方自定义指令说明文档 需求说明 进入某些页面需要加载一些外部资源,并在资源加载完后进行一些处理&…

建构信任基石:揭秘Web3的去中心化信任体系

在传统的互联网时代,信任往往建立在中心化的机构和第三方平台之上,而这种中心化的信任体系往往面临着数据泄露、信息滥用等问题。然而,随着区块链技术的发展,Web3时代正在向我们展示一种全新的信任体系,即去中心化的信…

C++基础一:代码编译和运行时的调用堆栈

目录 运行时进程的虚拟地址划分 函数调用堆栈 程序编译链接原理 运行时进程的虚拟地址划分 每一个进程的用户空间是私有的,内核空间是共享的 函数调用堆栈 程序编译链接原理

短剧小程序剧场短剧APP定制开发付费短剧之如何搭建?

在构建小剧场短剧影视小程序的过程中,遵循明确的步骤并注意到关键的细节至关重要。 步骤一:寻找适合的源码 1、考虑源码的授权方式:选择开源或商业授权的源码时,要仔细阅读其授权协议,确保它允许你进行修改和商业化利…

《数据结构》

简答题 一、设散列函数H(key)=key MOD 11,用线性探测再散列法解决冲突。对关键字序列{ 13,28,72,5,16,18,7,11,24 }在地址空间为0-10的散列区中建散列表,画出此表,并求等概率情况下查找成功时的平均查找长度。 散列函数为 H(key)=key MOD 11,将关键字序列 {13,28,…

python ---使用python操作mysql ---> pymysql

本章内容: 1:能够完成从MySQL中读取出数据; [重点] 查询: execute()、fetchall() 2:能够将数据写入MySQL数据库。 [重点] 插入数据: execute() sql insert into xxx [掌握]pymysql模块的安装 目标:了解如何安装pymysql模块? 当要使用Python和M…

白嫖游戏指南,Epic喜加一:《漫威暗夜之子》

前言 Epic喜加一:《漫威暗夜之子》《漫威暗夜之子》简介: 前言 接下来有时间会分享一些游戏相关可以白嫖的资源,包括游戏本体、游戏素材资源等等。 有需要的小伙伴可以关注这个专栏,不定期更新哦! 专栏:…

C++基础三:类和对象的细节原理

类和对象以及this指针: 概念 面向对象四大特性:抽象:抽象是一种将对象的共同特征提取出来并定义成一个通用模板的过程。类的抽象是指将一个类的共同属性和行为抽象出来,定义一个通用的类模板,而不关注具体的实现细节…

HBuilder中能否使用机器学习

HBuilder中能否使用机器学习? HBuilder是一款由腾讯公司开发的前端开发工具,主要用于快速构建和管理HTML5应用。HBuilder本身是一个专注于Web开发的集成开发环境(IDE),它提供了代码编辑、预览、调试等功能,并且集成了Espresso等移动应用测试框架。HBuilder的核心功能是针…

鸿蒙开发:从入门到实战!

一,默认模版中是容器Row或者Column中添加一个Text文本,我们可以尝试一下修改它的内容和样式,对UI语法有一个初体验: // 文本内容 Text("沉默的闪客") // 字体大小 .fontSize(50) //背…