HarmonyOS实战开发-实现Ability内页面间的跳转和数据传递。

news2024/11/28 19:02:10

介绍

本篇Codelab基于Stage模型下的Ability开发,实现Ability内页面间的跳转和数据传递。

最终效果图如下:

相关概念

  • 页面路由:提供通过不同的url访问不同的页面,包括跳转到应用内的指定页面、用应用内的某个页面替换当前页面、返回上一页面或指定的页面等。

环境搭建

软件要求

  • DevEco Studio版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 开发板类型:润和RK3568开发板。
  • OpenHarmony系统:3.2 Release。

环境搭建

完成本篇Codelab我们首先要完成开发环境的搭建,本示例以RK3568开发板为例,参照以下步骤进行:

  1. 获取OpenHarmony系统版本:标准系统解决方案(二进制)。以3.2 Release版本为例:

2.搭建烧录环境。

  1. 完成DevEco Device Tool的安装
  2. 完成RK3568开发板的烧录

3.搭建开发环境。

  1. 开始前请参考工具准备,完成DevEco Studio的安装和开发环境配置。
  2. 开发环境配置完成后,请参考使用工程向导创建工程(模板选择“Empty Ability”)。
  3. 工程创建完成后,选择使用真机进行调测。

代码结构解读

本篇Codelab只对核心代码进行讲解。

├──entry/src/main/ets                // 代码区
│  ├──common
│  │  ├──constants
│  │  │  └──CommonConstants.ets      // 公共常量类
│  │  └──utils
│  │    └──Logger.ets                // 日志类
│  ├──entryability
│  │  └──EntryAbility.ets            // 程序入口类
│  └──pages
│     ├──IndexPage.ets               // 入口页面
│     └──SecondPage.ets              // 跳转页
└──entry/src/main/resources          // 资源文件目录

页面跳转

  1. 在工程pages目录中,选中Index.ets,点击鼠标右键 > Refactor > Rename,改名为IndexPage.ets。改名后,修改工程entryability目录下EntryAbility.ets文件中windowStage.loadContent方法第一个参数为pages/IndexPage。
// EntryAbility.ets
onWindowStageCreate(windowStage: Window.WindowStage): void {
  ...
  windowStage.loadContent('pages/IndexPage', (err, data) => {
    ...
  });
}

2.在工程pages目录中,点击鼠标右键 > New > Page,新建命名为SecondPage的page页。

3.从IndexPage页面跳转到SecondPage页面,并进行数据传递,需要如下几个步骤:

  • 给两个页面导入router路由模块。
  • 在IndexPage页面中给Button组件添加点击事件,使用router.pushUrl()方法将SecondPage页面路径添加到url中,params为自定义参数。
  • SecondPage页面通过router.getParams()方法获取IndexPage页面传递过来的自定义参数。

IndexPage页面有一个Text文本和Button按钮,点击按钮跳转到下一个页面,并传递数据。IndexPage.ets代码如下:

// IndexPage.ets
import router from '@ohos.router';
import CommonConstants from '../common/constants/CommonConstants';

@Entry
@Component
struct IndexPage {
  @State message: string = CommonConstants.INDEX_MESSAGE;

  build() {
    Row() {
      Column() {
        Text(this.message)
          ...
        Blank()
        Button($r('app.string.next'))
          ...
          .onClick(() => {
            router.pushUrl({
              url: CommonConstants.SECOND_URL,
              params: {
                src: CommonConstants.SECOND_SRC_MSG
              }
           }).catch((error: Error) => {
             Logger.info(TAG, 'IndexPage push error' + JSON.stringify(error));
           });
        })
      }
      ...
    }
    ...
  }
}

SecondPage页面有两个Text文本,其中一个文本展示从IndexPage页面传递过来的数据。SecondPage.ets代码如下:

// SecondPage.ets
import router from '@ohos.router';
import CommonConstants from '../common/constants/CommonConstants';

@Entry
@Component
struct Second {
  @State message: string = CommonConstants.SECOND_MESSAGE;
  @State src: string = (router.getParams() as Record<string, string>)[CommonConstants.SECOND_SRC_PARAM];

  build() {
    Row() {
      Column() {
        Text(this.message)
          ...
        Text(this.src)
          ...
      }
      ...
    }
    ...
  }
}

页面返回

在SecondPage页面中,Button按钮添加onClick()事件。调用router.back()方法,实现返回上一页面的功能。

// SecondPage.ets
Button($r('app.string.back'))
  ...
  .onClick(() => {
    router.back();
  })

总结

您已经完成了本次Codelab的学习,并了解到以下知识点:

  1. 使用页面路由实现应用内页面跳转。

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→HarmonyOS教学视频

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等…视频教程

鸿蒙生态应用开发白皮书V2.0PDF:

获取完整版白皮书方式请点击→《鸿蒙生态应用开发白皮书V2.0PDF

在这里插入图片描述

鸿蒙 (Harmony OS)开发学习手册

一、入门必看

  1. 应用开发导读(ArkTS)
  2. .……

在这里插入图片描述


二、HarmonyOS 概念

  1. 系统定义
  2. 技术架构
  3. 技术特性
  4. 系统安全

在这里插入图片描述

三、如何快速入门?《鸿蒙基础入门学习指南》

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. .……

在这里插入图片描述


四、开发基础知识

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. .……

在这里插入图片描述


五、基于ArkTS 开发

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 7.网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. .……

在这里插入图片描述


更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙 (Harmony OS)开发学习手册

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

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

相关文章

【AI模型-机器学习工具部署】远程服务器配置Jupyter notebook或jupyter lab服务

随着AI人工智能的崛起&#xff0c;机器学习、深度学习、模型训练等技术也慢慢泛化&#xff0c;java开发有idea&#xff0c;web开发有vscode&#xff0c;那么AI开发神器肯定离不开jupyter lab&#xff08;基础版jupyter notebook&#xff09; Jupyter notebook部署 1. 安装jupy…

FPGA----ZCU106的petalinux 2019.1使用USB传输数据

1、实际项目中需要用到开发板的串口进行数据交互&#xff0c;之前讲的几节只是启动了网口&#xff08;如下链接&#xff09;。因此&#xff0c;本次给大家带来的官方自带串口例程的使用方法&#xff0c;本文的vivado工程和下述连接一样&#xff0c;PL端什么配置都没有。 FPGA-…

07-工作流设计:如何设计合理的多人开发模式?

一个企业级项目是由多人合作完成的&#xff0c;不同开发者在本地开发完代码之后&#xff0c;可能提交到同一个代码仓库&#xff0c;同一个开发者也可能同时开发几个功能特性。这种多人合作开发、多功能并行开发的特性如果处理不好&#xff0c;就会带来诸如丢失代码、合错代码、…

ttkbootstrap界面美化系列之Notebook(四)

在简单的界面设计中&#xff0c;Notebook也是常用的组件之一&#xff0c;Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感&#xff0c;不必都挤在一个界面上。在tkinter中就有Notebook组件&#xff0c;在ttkbootstrap中&#xff0c;同样也对Notebook进行了…

【文献分享】MOSAICS 程序: 用于分析模拟轨迹中的膜结构和动力学的软件套件

题目&#xff1a;MOSAICS: A software suite for analysis of membrane structure and dynamics in simulated trajectories 链接&#xff1a; DOI: 10.1016/j.bpj.2022.11.005 MOSAICS&#xff1a;用于分析模拟轨迹中的膜结构和动力学的软件套件 分子动力学 (MD) 模拟已成…

大模型面试准备(八):一文详解国产大模型导师 LLaMA v1和v2

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

你该选择哪个职业呢?数据科学家、数据分析师和数据工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

AI论文速读 | 【综述】用于轨迹数据管理和挖掘的深度学习:综述与展望

论文标题&#xff1a;Deep Learning for Trajectory Data Management and Mining: A Survey and Beyond 作者&#xff1a;Wei Chen(陈伟), Yuxuan Liang(梁宇轩), Yuanshao Zhu, Yanchuan Chang, Kang Luo, Haomin Wen(温皓珉), Lei Li, Yanwei Yu(于彦伟), Qingsong Wen(文青…

mixly编译esp32程序缺失问题bits/c++config.h

错误信息&#xff1a; 编译中... 使用平台的 ‘esp32’ 开发板&#xff0c;在列出的文件夹中&#xff1a;D:\windowsoftInstalled\mixly\mixly2.0-win32-x64\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.7 使用平台的 ‘esp32’ 代码&#xff0c;在列出的文件夹…

hcip结课考题答案解析 鹏

考试涵盖了BGP的基本状态、路由请求处理、网络层协议、路由聚合、网络连接管理、链路状态维护、路由信息发布、虚拟IP地址处理、路由表建立、AS外部路由学习等多个方面。考试内容涵盖了BGP的初始状态、活跃状态、Established状态、对等体交换、网络层协议、路由请求处理、链路状…

暴雨服务器X7740赋能大模型训练

数字经济浪潮愈演愈烈,大模型训练对服务器的要求也越来越高。在此背景下,暴雨信息发布专门为大规模模型训练而设计的全新旗舰GPU服务器—X7740,以卓越的计算性能、高速网络通信能力以及创新的能效表现,有效赋能大模型训练。 X7740 搭载了暴雨信息最新一代的英特尔至强可扩展处理…

gpt 3d三角形 重心坐标填充 沿x轴炫赵师傅

go import pygame from pygame.locals import * import sys import math# 初始化Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(3D Triangle Fill with Barycentric Coordinates)…

Modelsim手动仿真实例

目录 1. 软件链接 2. 为什么要使用Modelsim 3. Modelsim仿真工程由几部分组成&#xff1f; 4. 上手实例 4.1. 新建文件夹 4.2. 指定目录 4.3. 新建工程 4.4. 新建设计文件&#xff08;Design Files&#xff09; 4.5. 新建测试平台文件&#xff08;Testbench Files&…

简单实现企业微信远程打卡教程(永不迟到)

最近玩手游时刚好用到了手机模拟器&#xff0c;就是在电脑上安装一个手机模拟器&#xff0c;然后用电脑来挂机手机游戏 今天我突然有了一个想法&#xff0c;既然这个模拟器就是相当于一个虚拟的手机&#xff0c;那么是不是可以给它装上企业微信&#xff0c;然后让它帮我远程打卡…

mysql进阶知识总结

1.存储引擎 1.1MySQL体系结构 1).连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为通过认证…

【IDEA】使用debug方式去运行java程序

什么是debug工具&#xff1f; 调试工具&#xff08;debug工具&#xff09;是一种用于帮助程序员识别和修复程序中的错误的工具。它们提供了一系列的功能&#xff0c;帮助程序员在代码执行的过程中跟踪和检测问题&#xff0c;例如查看变量的值、检查函数的调用栈、设置断点来停…

关于Oracle VM VirtualBox无法查询IP地址的原因

1.如下&#xff0c;输入ifconfig却没有显示我框住的显示IP。 2.原因有可能&#xff1a; &#xff08;1&#xff09;主机没连上网络。 &#xff08;2&#xff09;虚拟机网络设置不正确。

Linux项目自动化构建工具-make/ makefile及其应用:多文件编写第一个linux程序:进度条(懒人学习必备博文!!!)

目录 1.前言--make/makefile的引入 2.快速上手make/makefile---自动化构建 3.关于依赖关系和依赖方法 4.自动化清理 为什么我们执行编译的时候&#xff0c;make一下就好&#xff0c;清理却要使用make clean? 5. make/makefile是如何知道当前目录下可执行文件是否为最新 6.文件…

【文献分享】通过形态扫描仪阐明自组装肽聚集:蛋白质-肽结构表征的新工具

题目&#xff1a;Elucidating Self‐Assembling Peptide Aggregation via Morphoscanner: A New Tool for Protein‐Peptide Structural Characterization 通过形态扫描仪阐明自组装肽聚集&#xff1a;蛋白质-肽结构表征的新工具 自组装和分子折叠在自然界中无处不在&#xff…

Mistral 7B v0.2 基础模型开源,大模型微调实践来了

Mistral AI在3月24日突然发布并开源了 Mistral 7B v0.2模型&#xff0c;有如下几个特点&#xff1a; 和上一代Mistral v0.1版本相比&#xff0c;上下文窗口长度从8k提升到32k&#xff0c;上下文窗口&#xff08;context window&#xff09;是指语言模型在进行预测或生成文本时&…