Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供与用户交互的能力。一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。

当一个Page由多个AbilitySlice共同构成时,这些AbilitySlice页面提供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个Page来实现,其中包含了两个AbilitySlice:一个AbilitySlice用于展示新闻列表,另一个AbilitySlice用于展示新闻详情。Page和AbilitySlice的关系如图所示。

相比于桌面场景,移动场景下应用之间的交互更为频繁。通常,单个应用专注于某个方面的能力开发,当它需要其他能力辅助时,会调用其他应用提供的能力。例如,外卖应用提供了联系商家的业务功能入口,当用户在使用该功能时,会跳转到通话应用的拨号页面。与此类似,HarmonyOS支持不同Page之间的跳转,并可以指定跳转到目标Page中某个具体的AbilitySlice。

  • AbilitySlice之间导航

当发起导航的AbilitySlice和导航目标的AbilitySlice处于同一个Page时,您可以通过present()方法实现导航。如下代码片段展示通过点击按钮导航到其他AbilitySlice的方法:

第一步:创建一个ability_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<DependentLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:width="match_parent"ohos:height="match_parent"><Textohos:id="$+id:text"ohos:width="match_content"ohos:height="match_content"ohos:text="Hello World"ohos:text_color="#000000"ohos:text_size="32fp"ohos:center_in_parent="true"/><Buttonohos:id="$+id:button"ohos:width="match_content"ohos:height="match_content"ohos:text="Next"ohos:text_size="19fp"ohos:text_color="#FFFFFF"ohos:top_padding="8vp"ohos:bottom_padding="8vp"ohos:right_padding="70vp"ohos:left_padding="70vp"ohos:center_in_parent="true"ohos:below="$id:text"ohos:margin="10vp"/>
</DependentLayout>

第二步:创建background_button.xml文件

<?xml version="1.0" encoding="utf-8"?>
<shapexmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:shape="rectangle"><cornersohos:radius="100"/><solidohos:color="#007DFF"/>
</shape>

第三步:在layout目录下的“ability_main.xml”文件中,使用background_element="$graphic:background_button"的方式引用“background_button.xml”文件:

<?xml version="1.0" encoding="utf-8"?>
<DependentLayout<Buttonohos:id="$+id:button"ohos:width="match_content"ohos:height="match_content"ohos:text="Next"ohos:text_size="19fp"ohos:text_color="#FFFFFF"ohos:top_padding="8vp"ohos:bottom_padding="8vp"ohos:right_padding="70vp"ohos:left_padding="70vp"ohos:center_in_parent="true"ohos:below="$id:text"ohos:margin="10vp"ohos:background_element="$graphic:background_button"/>
</DependentLayout>

第四步:分别创建第二个要跳转的界面和代码模块

package com.example.myapplication.slice;
​
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.DependentLayout;
import ohos.agp.components.Text;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
import ohos.agp.components.DependentLayout.LayoutConfig;
​
public class SecondAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_second); // 加载XML布局}}

第五步:实现Ability之间的跳转

package com.example.myapplication.slice;
​
import com.example.myapplication.ResourceTable;
​
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
​
public class MainAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);Button button = (Button) findComponentById(ResourceTable.Id_button);
​// 点击按钮跳转至第二个页面button.setClickedListener(listener -> present(new SecondAbilitySlice(), new Intent()));}
}

如果开发者希望在用户从导航目标AbilitySlice返回时,能够获得其返回结果,则应当使用presentForResult()实现导航。用户从导航目标AbilitySlice返回时,系统将回调onResult()来接收和处理返回结果,开发者需要重写该方法。返回结果由导航目标AbilitySlice在其生命周期内通过setResult()进行设置。

@Override
protected void onStart(Intent intent) {
​...Button button = ...;button.setClickedListener(listener -> presentForResult(new TargetSlice(), new Intent(), 0));...
​
}
​
@Override
protected void onResult(int requestCode, Intent resultIntent) {if (requestCode == 0) {// Process resultIntent here.}
}

有帮到你的点赞、收藏一下吧

需要更多教程,微信扫码即可

Page和AbilitySlice相关推荐

  1. Page 和Ability之间区别

    Ability 是应用所具备能力的抽象,也是应用程序的重要组成部分.一个应用可以具备多种能力(即可以包含多个 Ability),HarmonyOS 支持应用以 Ability 为单位进行部署.Abil ...

  2. 鸿蒙Ability(一):Feature Ability的Page Ability模板

    鸿蒙Ability 导语 Ability概念 Feature Ability Page与AbilitySlice 在Page Ability中用代码编写界面 生命周期 Page Ability生命周期 ...

  3. Harmony生命周期

    Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...

  4. Ability的基本概念(2)

    今天我们继续给大家介绍Page Ability,喜欢的同学记得保存收藏起来. Page Ability基本概念 Page和AbilitySlice:Page模板(以下简称"Page" ...

  5. HarmonyOS之深入解析Ability的功能和使用

    一.Ability 概述 Ability 是应用所具备能力的抽象,也是应用程序的重要组成部分.一个应用可以具备多种能力(即可以包含多个 Ability),HarmonyOS 支持应用以 Ability ...

  6. PageAbility基本概念

    一.Page与AbilitySlice Page Page模板(以下简称"Page")是FA唯一支持的模板,用于提供与用户交互的能力.一个Page可以由一个或多个AbilitySl ...

  7. 鸿蒙os多设备如何实现,鸿蒙OS中如何实现跨设备迁移?

    01 分布式任务调度概述 在 HarmonyOS 中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的"超级虚拟终端"提供统一的组件管理能力,为应用定义统一的能力基线. ...

  8. android 手表按钮事件,关于android-studio:上手做一个华为鸿蒙手表应用-4-生命周期事件...

    接上一篇:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202356576775850798&fid=010130 ...

  9. 鸿蒙os官网应用,鸿蒙OS应用开发实践(四)

    通过前面的学习:快速入门一个hello world程序和编写一个简单的交互程序,我们已经基本了解鸿蒙应用开发的基本流程,这一篇,我们来细化学习下鸿蒙的UI框架(基于JAVA). (一)Ability ...

最新文章

  1. 70个Python练手项目列表,看了让你茅塞顿开~
  2. 宏基因组、微生物、环境杂志影响因子(IF)及变化分析
  3. jq 给节点node加事件_JavaScript 原生对象、属性、方法、事件、事件参数
  4. tensorflow-RNN和LSTM
  5. Axure RP使用攻略--动态面板的用途(8)
  6. python学生信息管理系统课程设计实验报告_学生信息管理系统课程设计报告.docx...
  7. 教你怎么买美区苹果id
  8. 唯众中职人工智能专业解决方案
  9. 微信小程序添加体验成员,根据微信号搜索不到
  10. lstm实战,nlp情感分析(Kaggle)
  11. OPPO R8107刷机教程 救砖解锁 刷机包下载
  12. PAT1003甲级 java
  13. 关于STM32 Hal 库函数编写的程序 在编译时报错 :“Error: L6218E: Undefined symbol 函数名 (referred from xx.o)” 的解决办法
  14. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
  15. 小师妹问 easyUI mergeCells 行合并后表头和内容对不齐
  16. Ubuntu 16.04输出中文显示的是乱码,修改支持语系的环境变量
  17. Python3 Series数据详解
  18. html5 first child,:first-child | CSS属性参考
  19. 研究生阶段该怎么学习
  20. 基于手机信令数据的动态出行OD以及出行需求估计

热门文章

  1. 余承东亲曝P40相机成本,比骁龙865还贵,涨价原因找到了!
  2. 在线健身悄然升温,千亿市场潜力正在释放
  3. 1万吨猪肉只够吃1.5小时,中国人是有多爱猪肉?
  4. 用户遭骚扰质疑隐私被航旅纵横泄露 回应:用户有开启关闭的自主权
  5. 苹果iPhone XI奋起直追?直接升级四摄镜头
  6. 安卓发布应用、更新的细节
  7. Spring容器创建流程(9)完成创建
  8. OpenGL(一)——OpenGL入门
  9. Android图片加载之初步认识bitmap
  10. 业务逻辑全写在sql_12306的业务逻辑很复杂么?一条SQL语句搞不定?