Ability跳转方式


准备阶段

参考资料 ​​AbilitySlice间导航​​,​​Intent​​,​​Ability​

新建TwoAbility界面(如下图所示)

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_ability

1、startAbility

mainAbilitySlice代码如下

new Intent();
Operation operation=new

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_JAVA UI_02

2、startAbilityForResult

mainAbilitySlice 写startAbilityForResult

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

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_JAVA UI_03

在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("#####"

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_ability_04

在TwoAbilitySlice调用setResult的方法

new Intent();
intent.setParam("key","value");
getAbility().setResult(1002,intent);
terminateAbility();//todo 关闭该Ability

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_abilitySlice_05

AbilitySlice跳转方式

同一Page内导航

1、present

在mainAbilitySlice写代码如下

new TwoAbilitySlice(),new

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_JAVA UI_06

2、presentForResult

在mainability使用presentForResult的方法,代码如下

new TwoAbilitySlice(),new Intent(),1003);

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_ability_07

在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);
}
}

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_abilitySlice_08

在TwoabilitySlice实现点击并关闭该界面

new Intent();
intent.setParam("key","value");
setResult(intent);
terminate();//todo 关闭该AbilitySlice

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_ability_09

不同Page间导航

1、准备工作

在MainAbility的onStart方法中调用addActionRoute的方法,代码如下

void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
addActionRoute("com.pay", TwoAbilitySlice.class.getName());
}

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_JAVA UI_10


2、在mainAbilitySlice调用 startAbility的方法,代码如下

new Intent();
Operation operation=new Intent.OperationBuilder()
.withBundleName(getBundleName())
.withAction("com.pay")//todo action 要和TwoAbilitySlice的action相同

【Harmony OS】【JAVA UI】abilitySlice和ability跳转方式_abilitySlice_11


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