HarmonyOS 鸿蒙Next如何从Component组件跳转到一个新的UIAbility页面

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何从Component组件跳转到一个新的UIAbility页面

如何从Component组件跳转到一个新的UIAbility页面

2 回复
请问您是需要跳转一个新的page页面还是一个新的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相关链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/ts-basic-components-navigation-V13

Router相关链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-router-V13

如果您需要跳转一个新的UIAbility,

1.新建一个UIAbility,参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-add-new-ability-V13#section18658758104318

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页面,可以通过以下几种方式实现:

  1. 使用router机制

    • 如果是在同一个应用内跳转,可以使用router.pushUrl()router.replaceUrl()方法。前者将目标页压入页面栈,保留当前页状态;后者替换当前页,销毁当前页。
    • 在ArkTS卡片中,可以使用postCardAction接口的router能力,向指定UIAbility发送router事件,实现跳转。
  2. 基于startAbility实现页面跳转

    • 获取当前UIAbility的上下文信息。
    • 定义Want参数,包括目标UIAbility的bundleNameabilityName
    • 调用context.startAbility(want)方法实现跳转。

请注意,在开发过程中需确保目标UIAbility已被正确配置并导出,否则可能导致跳转失败。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部