HarmonyOS 鸿蒙Next startActivityForResult
HarmonyOS 鸿蒙Next startActivityForResult 大家知道在鸿蒙中如何实现类似安卓中的startActivityForResult,这种能力吗?
可以使用【页面级UI状态存储】[LocalStorage:页面级UI状态存储-管理应用拥有的状态-状态管理(V1)-状态管理-学习ArkTS语言-基础入门 - 华为HarmonyOS开发者 (huawei.com)] 或者使用Emitter进行数据传递,参考链接:[使用Emitter进行线程间通信-线程间通信-应用事件-Basic Services Kit(基础服务)-基础功能-系统 - 华为HarmonyOS开发者 (huawei.com)] 如果是用router传参数可以参考如下实现: har包下第一个界面:FirstHarPage
import router from '@ohos.router';
import { CustomButton } from '../../common/CustomButton';
import('../secondharpage/SecondHarPage')
@Entry({ routeName: 'FirstHarPage' })
@Component
export struct FirstHarPage {
onPageShow(): void {
let backParams = router.getParams() as RouteParams;
console.info('onPageShow: ' + JSON.stringify(backParams));
backParams.hasBackValue = false;
}
build() {
Row() {
Column() {
Text('FirstHarPage').fontSize(36).textAlign(TextAlign.Center).width('100%')
CustomButton({ mTitle: '跳转到第二个界面' }).onClick(() => {
let routeParams = new RouteParams('value1', 'value2');
router.pushNamedRoute({ name: 'SecondHarPage', params: routeParams })
})
}
.width('100%')
}
.height('100%')
}
}
export class RouteParams {
constructor(key1: string, key2: string) {
this.key1 = key1;
this.key2 = key2;
}
public key1?: string;
public key2?: string;
public hasBackValue: boolean = false;
}
har包下第二个界面:SecondHarPage
import router from '@ohos.router';
import { RouteParams } from '../firstharpage/FirstHarPage';
@Entry({ routeName: 'SecondHarPage' })
@Component
export struct SecondHarPage {
@State message: string = 'Hello World';
onPageShow(): void {
let params = router.getParams() as RouteParams;
console.info('aboutToAppear: ' + JSON.stringify(params));
}
build() {
Row() {
Column() {
Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
onBackPress(): boolean | void {
let backParams = new RouteParams('backValue1', 'backvalue2');
backParams.hasBackValue = true;
router.back({ url: '', params: backParams })
return true;
}
}
更多关于HarmonyOS 鸿蒙Next startActivityForResult的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,startActivityForResult
方法用于从一个Activity启动另一个Activity,并期望从后者获取结果。这与Android中的用法类似,但在鸿蒙系统中,实现细节和API可能有所不同。
鸿蒙系统中,若要实现startActivityForResult
的功能,你通常会使用Intent
来携带数据和指令,启动目标Activity。在目标Activity中处理完数据后,通过setResult
方法将数据返回给启动它的Activity。启动Activity需要实现一个回调接口,用于接收返回的结果。
具体步骤如下:
-
在启动Activity中:创建一个Intent,设置目标Activity的组件信息,并调用
startAbilityForResult
方法启动目标Activity(注意这里是startAbilityForResult
,与Android的startActivityForResult
略有不同)。 -
在目标Activity中:处理完数据后,使用
setResult
方法设置返回码和数据,然后调用finish
方法结束Activity,返回数据。 -
在启动Activity的回调中:重写处理返回结果的回调方法(如
onAbilityResult
),接收并处理返回的数据。
请注意,鸿蒙系统的API可能会随着版本更新而变化,具体实现细节请参考最新的鸿蒙开发文档。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html