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


     Ability跳转方式


    准备阶段

    参考资料 AbilitySlice间导航IntentAbility

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

    cke_1197.png

    1、startAbility

    mainAbilitySlice代码如下

    1. Intent intent=new Intent();
    2. Operation operation=new Intent.OperationBuilder()
    3. .withBundleName(getBundleName())
    4. .withAbilityName(TwoAbility.class.getName())
    5. .build();
    6. intent.setOperation(operation);
    7. startAbility(intent);

    2、startAbilityForResult

    mainAbilitySlice 写startAbilityForResult

    1. Intent intent = new Intent();
    2. Operation operation = new Intent.OperationBuilder()
    3. .withBundleName(getBundleName())
    4. .withAbilityName(TwoAbility.class.getName())
    5. .build();
    6. intent.setOperation(operation);
    7. startAbilityForResult(intent, 1001);

    在mainAbilitySlice 重写onAbilityResult的方法,代码如下

    1. @Override
    2. protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) {
    3. super.onAbilityResult(requestCode, resultCode, resultData);
    4. if (requestCode == 1001 && resultCode == 1002) {
    5. IntentParams myIntentParams= resultData.getParams();
    6. String value= (String) myIntentParams.getParam("key");
    7. System.err.println("#####" + value);
    8. }
    9. }

    在TwoAbilitySlice调用setResult的方法

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

    AbilitySlice跳转方式

    同一Page内导航

    1、present

    在mainAbilitySlice写代码如下

      present(new TwoAbilitySlice(),new Intent());

    2、presentForResult

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

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

    在mainabilitySlice重写onResult的方法,代码如下

    1. @Override
    2. protected void onResult(int requestCode, Intent resultIntent) {
    3. if (requestCode == 1003) {
    4. IntentParams intentParams= resultIntent.getParams();
    5. String value= (String) intentParams.getParam("key");
    6. System.err.println("#####"+value);
    7. }
    8. }

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

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

    不同Page间导航

    1、准备工作

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

    1. @Override
    2. public void onStart(Intent intent) {
    3. super.onStart(intent);
    4. super.setMainRoute(MainAbilitySlice.class.getName());
    5. addActionRoute("com.pay", TwoAbilitySlice.class.getName());
    6. }

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

    1. Intent intent=new Intent();
    2. Operation operation=new Intent.OperationBuilder()
    3. .withBundleName(getBundleName())
    4. .withAction("com.pay")//todo action 要和TwoAbilitySlice的action相同
    5. .withAbilityName(MainAbility.class.getName())
    6. .build();
    7. intent.setOperation(operation);
    8. startAbility(intent);

     

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

  • 相关阅读:
    中断上下文和进程上下文
    【实例分割】YOLACT++:Better Real-time Instance Segmentation论文详解
    时间戳的理解
    成都东部新区文化旅游体育局莅临国际数字影像产业园参观入驻企业,共促政产交流“零距离”
    ReentrantLock 公平锁和非公平锁。
    手机cpu架构查看及armeabi、armeabi-v7a、arm64-v8a及x86等说明
    微信管理系统如何助力企业提升效率和业绩!
    进程地址空间
    对联写作精解心得(2)
    React 官网为什么那么快?
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/126155132