参考资料 AbilitySlice间导航,Intent,Ability
新建TwoAbility界面(如下图所示)

1、startAbility
mainAbilitySlice代码如下
- Intent intent=new Intent();
- Operation operation=new Intent.OperationBuilder()
- .withBundleName(getBundleName())
- .withAbilityName(TwoAbility.class.getName())
- .build();
- intent.setOperation(operation);
- startAbility(intent);
2、startAbilityForResult
mainAbilitySlice 写startAbilityForResult
- Intent intent = 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("#####" + value);
- }
- }
在TwoAbilitySlice调用setResult的方法
- Intent intent=new Intent();
- intent.setParam("key","value");
- getAbility().setResult(1002,intent);
- terminateAbility();//todo 关闭该Ability
1、present
在mainAbilitySlice写代码如下
present(new TwoAbilitySlice(),new Intent());
2、presentForResult
在mainability使用presentForResult的方法,代码如下
presentForResult(new TwoAbilitySlice(),new Intent(),1003);
在mainabilitySlice重写onResult的方法,代码如下
- @Override
- protected void onResult(int requestCode, Intent resultIntent) {
- if (requestCode == 1003) {
- IntentParams intentParams= resultIntent.getParams();
- String value= (String) intentParams.getParam("key");
- System.err.println("#####"+value);
- }
- }
在TwoabilitySlice实现点击并关闭该界面
- Intent intent=new Intent();
- intent.setParam("key","value");
- setResult(intent);
- terminate();//todo 关闭该AbilitySlice
1、准备工作
在MainAbility的onStart方法中调用addActionRoute的方法,代码如下
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- super.setMainRoute(MainAbilitySlice.class.getName());
- addActionRoute("com.pay", TwoAbilitySlice.class.getName());
- }
2、在mainAbilitySlice调用 startAbility的方法,代码如下
- Intent intent=new Intent();
- Operation operation=new Intent.OperationBuilder()
- .withBundleName(getBundleName())
- .withAction("com.pay")//todo action 要和TwoAbilitySlice的action相同
- .withAbilityName(MainAbility.class.getName())
- .build();
- intent.setOperation(operation);
- startAbility(intent);
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh