HarmonyOS 鸿蒙Next如何从Component组件跳转到一个新的UIAbility页面
HarmonyOS 鸿蒙Next如何从Component组件跳转到一个新的UIAbility页面
如何从Component组件跳转到一个新的UIAbility页面
我看您的注释跳转banner详情页,一般用Page就可以了。
UIAbility组件中可以通过多个Page页面来实现一个功能模块。
Page页面是单个页面。
UIAbility相关链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/uiability-lifecycle-V13
Page相关链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-add-page-V13
如果您仅需要跳转一个新的Page, Navigation和Router都可以实现,推荐使用Navigation。
Navigation相关链接:
Router相关链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-router-V13
如果您需要跳转一个新的UIAbility,
1.新建一个UIAbility,参考链接:
2.在您新建的UIAbility中的onWindowStageCreate方法中,
将windowStage.loadContent('pages/Page', (err, data) => { 中的'pages/Page',替换为您banner详情页对应的Page名。
3.下面是我新建工程,index.ets的样例代码,请参考:
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import Want from '@ohos.app.ability.Want';
[@Entry](/user/Entry)
[@Component](/user/Component) struct Index{
private context = getContext(this) as common.UIAbilityContext;
build(){
Column(){
Button('newAbility').width('100%')
.onClick(()=>{
// 将Context对象传递过去
let wantInfo: Want = {
deviceId: '', // deviceId为空表示本设备
bundleName: 'com.example.test',//您自己的App对应的包名
moduleName: 'entry', // moduleName非必选
abilityName: 'NewAbility',//您自己新建的UIability
parameters: { // 自定义信息
info: '来自EntryAbility Index页面'
},
}
// context为调用方UIAbility的UIAbilityContext
this.context.startAbility(wantInfo).then(() => {
console.log('startAbility success.');
}).catch((error: BusinessError) => {
console.log('startAbility failed.');
});
})
}.width('100%').height('100%')
}
}
其中这两个值您要按照您app中的参数填写:
bundleName: 'com.example.test',//您自己的App对应的包名
abilityName: 'NewAbility',//您自己新建的UIability
请您验证。
UIAbility和Android Activity有一部分相似处,但不是一个概念,没有对标关系。UIAbility的粒度比Activity大,UIAbility是UI页面的容器,它不是页面展示的基本单位。
每个UIAbility实例都会产生一个任务(最近任务列表中显示的任务)实例;较少的UIAbility实例对系统开销也小,有利于运行性能和内存优化。
您可以试一下我发的代码,会跳一个新的任务出来。
详细的区别请参考:
https://developer.huawei.com/consumer/cn/forum/topic/0201648337710180358
在HarmonyOS鸿蒙Next中,从Component组件跳转到一个新的UIAbility页面,可以通过以下几种方式实现:
-
使用router机制:
- 如果是在同一个应用内跳转,可以使用
router.pushUrl()
或router.replaceUrl()
方法。前者将目标页压入页面栈,保留当前页状态;后者替换当前页,销毁当前页。 - 在ArkTS卡片中,可以使用
postCardAction
接口的router
能力,向指定UIAbility发送router事件,实现跳转。
- 如果是在同一个应用内跳转,可以使用
-
基于startAbility实现页面跳转:
- 获取当前UIAbility的上下文信息。
- 定义Want参数,包括目标UIAbility的
bundleName
和abilityName
。 - 调用
context.startAbility(want)
方法实现跳转。
请注意,在开发过程中需确保目标UIAbility已被正确配置并导出,否则可能导致跳转失败。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。