【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式
原创
©著作权归作者所有:来自51CTO博客作者华为开发者论坛的原创作品,请联系作者获取转载授权,否则将追究法律责任
Ability跳转方式
准备阶段
参考资料 AbilitySlice间导航,Intent,Ability
新建TwoAbility界面(如下图所示)

1、startAbility
mainAbilitySlice代码如下
new Intent();
Operation operation=new

2、startAbilityForResult
mainAbilitySlice 写startAbilityForResult
new Intent();
Operation operation = new Intent.OperationBuilder()
.withBundleName(getBundleName())
.withAbilityName(TwoAbility.class.getName())
.build();
intent.setOperation(operation);
startAbilityForResult(intent, 1001);

在mainAbilitySlice 重写onAbilityResult的方法,代码如下
@Override
protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) {
super.onAbilityResult(requestCode, resultCode, resultData);
if (requestCode == 1001 && resultCode == 1002) {
IntentParams myIntentParams= resultData.getParams();
String value= (String) myIntentParams.getParam("key");
System.err.println("#####"

在TwoAbilitySlice调用setResult的方法
new Intent();
intent.setParam("key","value");
getAbility().setResult(1002,intent);
terminateAbility();//todo 关闭该Ability

AbilitySlice跳转方式
同一Page内导航
1、present
在mainAbilitySlice写代码如下
new TwoAbilitySlice(),new

2、presentForResult
在mainability使用presentForResult的方法,代码如下
new TwoAbilitySlice(),new Intent(),1003);

在mainabilitySlice重写onResult的方法,代码如下
void onResult(int requestCode, Intent resultIntent) {
if (requestCode == 1003) {
IntentParams intentParams= resultIntent.getParams();
String value= (String) intentParams.getParam("key");
System.err.println("#####"+value);
}
}

在TwoabilitySlice实现点击并关闭该界面
new Intent();
intent.setParam("key","value");
setResult(intent);
terminate();//todo 关闭该AbilitySlice

不同Page间导航
1、准备工作
在MainAbility的onStart方法中调用addActionRoute的方法,代码如下
void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
addActionRoute("com.pay", TwoAbilitySlice.class.getName());
}

2、在mainAbilitySlice调用 startAbility的方法,代码如下
new Intent();
Operation operation=new Intent.OperationBuilder()
.withBundleName(getBundleName())
.withAction("com.pay")//todo action 要和TwoAbilitySlice的action相同

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh