HarmonyOS 鸿蒙Next Navigation 组建里面的子界面跳转带参数返回

发布于 1周前 作者 phonegap100 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Navigation 组建里面的子界面跳转带参数返回
A子界面跳到B子界面 B处理完业务后带参数返回A子界面 然后A界面进行接收参数操作 官网上是这样

// pop B页面
this.pathInfos.pop();

//获取当前栈顶页面名字(A页面)
let allPathName: Array<string> = this.pathInfos.getAllPathName();
let pathNameA: string = allPathName[allPathName.length - 1];

// pop A页面
this.pathInfos.pop();

// 重新PUSH A页面
this.pathInfos.pushPath(new NavPathInfo(pathNameA, this.routerParams))

但是这个会让A重载2次,A界面进去加载的东西有点多,不够流畅,有没有类型安卓上EVENbus组件能全局监听 或者有其他的更好的解决方案吗


更多关于HarmonyOS 鸿蒙Next Navigation 组建里面的子界面跳转带参数返回的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
想Navigation带参返回,可以参考文档【https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-navigation-V5#示例4】,跳转的时候加上onPop参数,返回的参数会在这里接收。

更多关于HarmonyOS 鸿蒙Next Navigation 组建里面的子界面跳转带参数返回的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


深色代码主题
复制
import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry @ComponentV2 struct Index { private pathStack = new NavPathStack() @Local text: string = “”

build() { Navigation(this.pathStack) { Column() { Button(‘go child’).onClick(() => { this.pathStack.pushPathByName(‘child’, null, (info: PopInfo) => { if (info && info.result) { this.text = info.result.toString() hilog.debug(0x000000, ‘rainrain’, 'result == ’ + info.result.toString()) } }) }) Text('收到的数据 === ’ + this.text) } }.size({ width: ‘100%’, height: ‘100%’ }) .hideTitleBar(false) .hideToolBar(false) .navDestination(this.BuilderMap) }

@Builder BuilderMap() { ChildPage() } }

@ComponentV2 struct ChildPage { build() { NavDestination() { Column() { Button(‘pop with param’).onClick(() => { this.queryNavigationInfo()?.pathStack.pop(‘one str’) }) Button(‘pop no param’).onClick(() => { this.queryNavigationInfo()?.pathStack.pop() }) } }.size({ width: ‘100%’, height: ‘100%’ }) } }

在HarmonyOS鸿蒙Next Navigation组件中,实现子界面跳转带参数返回的功能,可以通过以下步骤完成:

  1. 跳转时传递参数

    • 使用Intent对象封装要传递的参数。
    • 调用startAbility方法,将封装好的Intent传递给目标子界面(Ability)。
  2. 子界面接收参数

    • 在目标子界面的onStart方法中,通过getIntent方法获取传递过来的Intent
    • Intent中提取出需要的参数。
  3. 子界面返回参数

    • 在子界面中准备好要返回的数据,同样使用Intent对象封装。
    • 调用terminateAbility方法,并设置结果码和数据,将数据返回给启动它的界面。
  4. 启动界面接收返回参数

    • 在启动界面的onAbilityResult方法中接收返回的数据。
    • 根据结果码判断返回状态,并从Intent中提取返回的参数。

具体实现时,需要注意数据类型的兼容性和Intent的使用规范。确保在传递和接收数据时,数据类型一致,且Intent的使用符合HarmonyOS的开发规范。

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

回到顶部