HMS16. 页面间跳转导航

01. 关于页面间的跳转

  在HarmonyOS中,一个App允许存在多个Ability, 一个Ability中允许存在多个AbilitySlice; 

  因此在 App的应用中,存在同一个Ability中不同Slice之间的跳转,也存在不同Ability间的页面跳转;

  a. 在一个Ability里,使用  present() / presentForResult() 方法从一个AbilitySlice导航到另外一个 AbilitySlice; 即同一个Page内,不同AbilitySlice之间的跳转;

    

  b. 在不同Ability的AbilitySlice之间,使用  startAbility() / startAbilityForResult() 来启动一个新的 Ability; 

    

 02. 本次学习Demo源码
  a. 实现同Ability内不同Slice间的跳转;
  b. 实现不同Ability间的跳转;

  

 

03. 需注意的知识点

  >>>  新建 Ability

    

  >>>  在一个 Ability中新建新的 AbilitySlice

    

   >>> 同Ability间,源Slice 接收 目标 Slice 返回数据的的处理

    a. 源Slice 在调用 presentForResult时,传入一个 请求码 (requestCode); 请求码自定义;
     

    b,源 Slice 配置结果接收监听

     

    c. 目标Slice中配置返回结果

       

   >>> 不同Ability间,源Slice 接收 目标 Slice 返回数据的的处理

     不同Ability之间的跳转,需要使用 startAbilityForResult来处理;

     a. 源Slice发起请求

      

    b. 目标Slice或目标Ability中配置返回数据 

     * 从目标Ability 中配置返回结果 

        

     * 从目标Slice中返回结果

     

     c. 源Slice中配置结果接收处理

     

   >>> 从例程中可以看到,关于不同Page之间的跳转有二种不同的方式,

    * 第一种方式,是直接配置跳转参数,

       

    * 第二种方式,是通过指定的Action来跳转

     

     要想实现第二种效果,需要注意如下几点:

      1. 目标ABility,注册Action路由
       

       2.目标ABility所属模块 config.json 中,为目标模块注册 Action

          

       3.调用Slice,在业务中指定目标ABility中注册的Action; 

       Operation operation = new Intent.OperationBuilder().withAction(ACTION_NAME).build();
       此时,可正常跳转到目标ABility; 

  

  

 

    

      

 

 

    

  

  

原文地址:https://www.cnblogs.com/jieling/p/15500206.html