鸿蒙跨包跳转页面-HSP页面路由

页面路由跳转

若开发者想在entry模块中,添加一个按钮跳转至library模块中的menu页面(路径为:library/src/main/ets/pages/menu.ets),那么可以在使用方的代码(entry模块下的Index.ets,路径为:entry/src/main/ets/pages/Index.ets)里这样使用:

import { Log, add, MyTitleBar, ResManager, nativeMulti } from 'library';
import { BusinessError } from '@ohos.base';
import Logger from '../logger/Logger';
import router from '@ohos.router';const TAG = 'Index';@Entry
@Component
struct Index {@State message: string = '';build() {Column() {List() {ListItem() {Text($r('app.string.click_to_menu')).fontSize(18).textAlign(TextAlign.Start).width('100%').fontWeight(500).height('100%')}.id('clickToMenu').borderRadius(24).width('685px').height('84px').backgroundColor($r('sys.color.ohos_id_color_foreground_contrary')).margin({ top: 10, bottom: 10 }).padding({ left: 12, right: 12, top: 4, bottom: 4 }).onClick(() => {router.pushUrl({url: '@bundle:com.samples.hspsample/library/ets/pages/Menu'}).then(() => {console.log('push page success');Logger.info(TAG, 'push page success');}).catch((err: BusinessError) => {Logger.error(TAG, `pushUrl failed, code is ${err.code}, message is ${err.message}`);})})}.alignListItem(ListItemAlign.Center)}.width('100%').backgroundColor($r('app.color.page_background')).height('100%')}
}

其中router.pushUrl方法的入参中url的内容为:

'@bundle:com.samples.hspsample/library/ets/pages/Menu'

url内容的模板为:

'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'

页面路由返回

如果当前处于HSP中的页面,需要返回之前的页面时,可以使用router.back方法,但是返回的页面必须是当前页面跳转路径上的页面。

import router from '@ohos.router';@Entry
@Component
struct Index3 { // 路径为:`library/src/main/ets/pages/Back.ets@State message: string = 'HSP back page';build() {Row() {Column() {Text(this.message).fontFamily('HarmonyHeiTi').fontWeight(FontWeight.Bold).fontSize(32).fontWeight(700).fontColor($r('app.color.text_color')).margin({ top: '32px' }).width('624px')Button($r('app.string.back_to_HAP')).id('backToHAP').fontFamily('HarmonyHeiTi').height(48).width('624px').margin({ top: 550 }).type(ButtonType.Capsule).borderRadius($r('sys.float.ohos_id_corner_radius_button')).backgroundColor($r('app.color.button_background')).fontColor($r('sys.color.ohos_id_color_foreground_contrary')).fontSize($r('sys.float.ohos_id_text_size_button1'))// 绑定点击事件.onClick(() => {router.back({ //  返回HAP的页面url: 'pages/Index' // 路径为:`entry/src/main/ets/pages/Index.ets`})})Button($r('app.string.back_to_HSP')).id('backToHSP').fontFamily('HarmonyHeiTi').height(48).width('624px').margin({ top: '4%' , bottom: '6%' }).type(ButtonType.Capsule).borderRadius($r('sys.float.ohos_id_corner_radius_button')).backgroundColor($r('app.color.button_background')).fontColor($r('sys.color.ohos_id_color_foreground_contrary')).fontSize($r('sys.float.ohos_id_text_size_button1'))// 绑定点击事件.onClick(() => {router.back({ //  返回HSP的页面url: '@bundle:com.samples.hspsample/library/ets/pages/Menu' //路径为:`library/src/main/ets/pages/Menu.ets})})}.width('100%')}.backgroundColor($r('app.color.page_background')).height('100%')}
}
  • 页面返回router.back方法的入参中url说明:

如果从HSP页面返回HAP页面,url的内容为:

'pages/Index'

url内容的模板为:

'页面所在的文件名(不加.ets后缀)'
  • 如果从HSP1的页面跳到HSP2的页面后,需要返回到HSP1的页面,url的内容为:
'@bundle:com.samples.hspsample/library/ets/pages/Menu'

url内容的模板为:

'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'

注意:测试中使用DevEco Studio 本地模拟器测试: windowStage.loadContent直接加载跨包路由,发现白屏,半天加载不出来,改用真机测试,测试没有问题;还有一些其他问题,在本地模拟器上是会加载异常,这个时候最好使用真机测试一下,本地模拟器有时候就是有点拉胯!!!

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

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

相关文章

YOLOv8改进 | 图像去雾 | 特征融合注意网络FFA-Net增强YOLOv8对于模糊图片检测能力(北大和北航联合提出)

一、本文介绍 本文给大家带来的改进机制是由北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络,该网络的主要思想是利用特征融合注意力网络(Feature Fusion Attention Network)直接恢复无雾图像,FFA-Net通过特征…

MyBatis-Plus学习记录

目录 MyBatis-Plus快速入门 简介 快速入门 MyBatis-Plus核心功能 基于Mapper接口 CRUD 对比mybatis和mybatis-plus: CRUD方法介绍: 基于Service接口 CRUD 对比Mapper接口CRUD区别: 为什么要加强service层: 使用方式 CR…

开发指南009-从list导出excel文件

从数据库返回一般是对象的列表,平台底层提供了从list转为excel文件的方法。平台的设计思想就是为一些典型的场景设计对应的解决方法,通过模式化的方法来简化编程和提高维护性(通过标准化来减少学习成本和维护成本,张三做的东西和李…

ARC 的 retainCount 是怎么存储的

ARC的retainCount是存吃在64张哈希表中的,根据哈希算法去查找所在的位置,无需便利 散列表(引用计数表、weak表) SideTables 表在 非嵌入式的64位系统中,有 64张 SideTable 表每一张 SideTable 主要是由三部分组成。自…

【MASM汇编语言快速入门】MASM常用伪指令速查表——变量

MASM伪指令速查表–变量 初学MASM时, 常常看不懂db, dup(?)等汇编指令的含义, 教材中也缺乏系统的解释。与机器指令不同,这些指令叫伪指令, 在编译(汇编)的时候被MASM编译器处理, 而在运行时计…

Boot——组件(导航和选项卡、分页、卡片、轮播图)

Boot——组件&#xff08;下&#xff09; 导航和选项卡 https://v5.bootcss.com/docs/components/navs-tabs/ &#xff08;1&#xff09;导航 <ul class"nav"><li class"nav-item"><a href"#" class"nav-link">…

游戏数据处理

游戏行业关键数据指标 ~ 总激活码发放量、总激活量、总登录账号数 激活率、激活登录率 激活率 激活量 / 安装量 激活率 激活量 / 激活码发放量 激活且登录率 激活且登录量 / 激活码激活量 激活且登录率应用场景 激活且登录率是非常常用的转化率指标之一&#xff0c;广泛…

Ypay源支付6.9无授权聚合免签系统可运营源码

YPay是一款专为个人站长设计的聚合免签系统&#xff0c;YPay基于高性能的ThinkPHP 6.1.2 Layui PearAdmin架构&#xff0c;提供了实时监控和管理的功能&#xff0c;让您随时随地掌握系统运营情况。 说明 Ypay源支付6.9无授权聚合免签系统可运营源码 已搭建测试无加密版本…

HTML5:七天学会基础动画网页13

看完前面很多人可能还不是很明白0%-100%那到底是怎么回事&#xff0c;到底该怎么用&#xff0c;这里我们做一个普遍的练习——心跳动画 想让心❤跳起来&#xff0c;我们先分析一波&#xff0c;这个心怎么写&#xff0c;我们先写一个正方形&#xff0c;再令一个圆形前移: 再来一…

蓝桥杯历年真题 省赛 Java b组 2016年第七届

一、题目 分小组 9名运动员参加比赛&#xff0c;需要分3组进行预赛。 有哪些分组的方案呢&#xff1f; 我们标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法。 该程序的正常输出为&#xff1a; ABC DEF GHI ABC DEG FHI ABC DEH FGI ABC DEI FGH ABC DFG EHI ABC…

Linux中YUM仓库的配置

Linux软件包的管理 YUM仓库是什么YUM的常用命令修改YUM源其实CentOS7已经对YUM做了优化 YUM仓库是什么 之前传统RPM的管理方式 可以简单理解为写Java的时候不用Maven管理 jar包都要自己手动去导入 去下载 但是配置好YUM仓库 就放佛在用Maven管理Java项目 基于RPM包管理 能够从…

Python导入类说一说

要在Python中导入一个类&#xff0c;需要使用import关键字。 详细去看下面的代码 1、多例类 class Restaurant:餐馆类def __init__(self,restaurant_name,cuisine_type):#类的属性self.restaurant_name restaurant_nameself.cuisine_type cuisine_type# self.stregth_leve…

2024软件测试应该学什么?“我“怎么从功能转入自动化测试?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、软件测试应该学…

TypeScript编译选项

编译单个文件&#xff1a;终端 tsc 文件名 自动编译单个文件&#xff1a;终端 tsc 文件名 -w 编译整个项目&#xff1a;tsc 前提是得有ts的配置文件tsconfig.json 自动编译整个项目&#xff1a;tsc --w tsconfig.json默认文件内容&#xff1a; tsconfig.json是ts编译器的配…

代码随想录算法训练营第16天

104.二叉树的最大深度 &#xff08;优先掌握递归&#xff09; 思路&#xff1a; 注意&#xff1a; 传入参数&#xff1a;depth, root 终止条件&#xff1a;if(root nullptr) return 0; 单层递归逻辑&#xff1a; 左右中int left getmax(depth1, root->left);int right …

代码随想录算法训练营Day45 ||leetCode 70. 爬楼梯 (进阶)|| 322. 零钱兑换 || 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 本质上和leetcode377一样 #include <iostream> #include <vector> using namespace std; int main() {int n, m;while (cin >> n >> m) {vector<int> dp(n 1, 0);dp[0] 1;for (int i 1; i < n; i…

【MySQL 系列】MySQL 索引篇

在 MySQL 中&#xff0c;索引是一种帮助存储引擎快速获取数据的数据结构&#xff0c;形象的说就是索引是数据的目录。它一般是以包含索引键值和一个指向索引键值对应数据记录物理地址的指针的节点的集合的清单的形式存在。通过使用索引&#xff0c; MySQL 可以在不需要扫描整个…

『scrapy爬虫』03. 爬取多个页面(详细注释步骤)

目录 1. 分析网页试着拿到多个页面的url2. 抓取250个电影3. start_requests的使用4. 代码规范导库的优化关于重写最终修改后的代码 总结 欢迎关注 『scrapy爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『scrapy爬虫』 专栏&#xff0c;持续更新中 1. 分析网页试着拿到多个页面…

关于tcp协议

目录 前言&#xff1a; 一、TCP协议的基本概念&#xff1a; 二、TCP协议的主要特点&#xff1a; 2.1面向连接&#xff1a; 2.2可靠传输&#xff1a; 2.3基于字节流&#xff1a; 三、TCP连接的建立与终止&#xff1a; 3.1连接建立&#xff1a; 3.1.1SYN&#xff1a; 3…

全排列 递归

#全排列 递归写法 def permute(nums,l,r):if lr: #如果lr 说明指剩下最后一个元素了 返回当前列表print(.join(nums)) #字符串连接else:for i in range(l,r1): #进入循环#交换i l 两个元素位置nums[l],nums[i]nums[i],nums[l]#递归 调用permute(nums,l1,r) #l1 表示下一个元素…