【JAVA UI】abilitySlice或ability以Action方式跳转


?参考资料

Page Ability基本概念

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

【HarmonyOS】【FAQ】鸿蒙问题合集4

代码实现

1、准备工作

新建一个TwoAbility如下图所示

cke_347.png?

2、新建PaySlice界面

新建xml文件,在resources的base的layout新建ability_pay.xml文件,代码如下

<?xml version="1.0" encoding="utf-8"?>

    

在slice文件目录下新建一个payslice.class文件,代码如下

package com.newdemo.myapplication.slice;

import com.newdemo.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;

public class PaySlice  extends AbilitySlice {
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        setUIContent(ResourceTable.Layout_ability_pay);
    }
}
3、config.json配置

在config.json文件找到twoability的添加“action.pay”的action,代码如下

  "skills": [
          {
            "actions": [
              "action.pay"
            ]
          }
        ],

cke_5791.png?

4、xml绘画

在ability_main.xml布局添加两个text组件,第一个组件text的内容为“跳转TwoAbility”,另外一个Text组件text的内容为“以Action跳转TwoAbility的payslice”,代码如下

<?xml version="1.0" encoding="utf-8"?>


    

    

mainAbilitySlice代码实现

分别实现跳转TwoAbility和以Action的调到TwoAbility的PaySlice界面,代码如下

package com.newdemo.myapplication.slice;

import com.newdemo.myapplication.ResourceTable;
import com.newdemo.myapplication.TwoAbility;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Component;

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        //todo 跳转到TwoAbility
        findComponentById(ResourceTable.Id_text_StartTwoAbility).setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                Intent intent=new Intent();
                Operation operation=new Intent.OperationBuilder()
                        //todo 设置BundleName
                        .withBundleName(getBundleName())
                        //todo 设置AbilityName
                        .withAbilityName(TwoAbility.class.getName())
                        .build();
                intent.setOperation(operation);
                startAbility(intent);
            }
        });
        //todo 以Action跳转到TwoAbility的pay界面
        findComponentById(ResourceTable.Id_text_StartPayWithAction).setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                Intent intent=new Intent();
                Operation operation=new Intent.OperationBuilder()
                        //todo 设置BundleName
                        .withBundleName(getBundleName())
                        //todo 设置AbilityName
                        .withAbilityName(TwoAbility.class.getName())
                        //todo 设置Action
                        .withAction("action.pay")
                        .build();
                intent.setOperation(operation);
                startAbility(intent);
            }
        });
    }

}

运行效果

4bec62a3f5cde9992e8e752dc11a34ae_416x949.gif%40900-0-90-f.gif?

?

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