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;