package com.example.hanrupageability.slice;import com.example.hanrupageability.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;public class SecondAbilitySlice extends AbilitySlice{@Overrideprotected void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_second);}}接下来我们可以通过setMainRoute()方法来设置显示SecondAbilitySlice:
package com.example.hanrupageability;import com.example.hanrupageability.slice.MainAbilitySlice;import com.example.hanrupageability.slice.SecondAbilitySlice;import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;public class MainAbility extends Ability {@Overridepublic void onStart(Intent intent) {super.onStart(intent);// 设置默认显示的AbilitySlice//super.setMainRoute(MainAbilitySlice.class.getName());super.setMainRoute(SecondAbilitySlice.class.getName());}}然后运行这个项目:

文章插图
addActionRoute()方法
setMainRoute()方法与addActionRoute()方法的使用示例如下:
package com.example.hanrupageability;import com.example.hanrupageability.slice.MainAbilitySlice;import com.example.hanrupageability.slice.SecondAbilitySlice;import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;public class MainAbility extends Ability {@Overridepublic void onStart(Intent intent) {super.onStart(intent);// 设置默认显示的AbilitySlicesuper.setMainRoute(MainAbilitySlice.class.getName());// super.setMainRoute(SecondAbilitySlice.class.getName());// 配置路由规则显示addActionRoute("action.test.second", SecondAbilitySlice.class.getName());}}addActionRoute()方法中使用的动作命名,需要在应用配置文件(config.json)中注册:"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home","action.test.second"]}],如图:
文章插图
三、创建PageAbility默认启动一个HarmonyOS应用App,跟根据config.json中的配置,先加载MainAbility 。
{"app": {"bundleName": "com.example.hanrupageability","vendor": "example","version": {"code": 1000000,"name": "1.0.0"}},"deviceConfig": {},"module": {"package": "com.example.hanrupageability","name": ".MyApplication","mainAbility": "com.example.hanrupageability.MainAbility","deviceType": ["phone"],"distro": {"deliveryWithInstall": true,"moduleName": "entry","moduleType": "entry","installationFree": false},"abilities": [{"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home","action.test.second"]}],"orientation": "unspecified","name": "com.example.hanrupageability.MainAbility","icon": "$media:icon","description": "$string:mainability_description","label": "$string:entry_MainAbility","type": "page","launchType": "standard"}]}}在MainAbility中,根据设置的主路由,加载MainAbilitySlice:@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setMainRoute(MainAbilitySlice.class.getName());}在MainAbilitySlice中,根据setUIContent()设置要显示的xml布局文件,最终在我们的屏幕上显示ability_main.xml中的内容 。@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);}现在如果我们想默认加载自己写的Ability,我们来实现一下 。首先在java中新建一个Ability文件:MyAbility.java 。
package com.example.hanrupageability;import com.example.hanrupageability.slice.MyAbilitySlice;import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;public class MyAbility extends Ability {@Overrideprotected void onStart(Intent intent) {super.onStart(intent);// 设置主路由super.setMainRoute(MyAbilitySlice.class.getName());}}这里我们设置要加载对应MyAbilitySlice,接下来在slice包下,新建一个AbilitySlice文件:MyAbilitySlice.java:package com.example.hanrupageability.slice;import com.example.hanrupageability.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;public class MyAbilitySliceextends AbilitySlice {@Overrideprotected void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_my_layout);}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 6种事件驱动的架构模式
- 技术人员如何做晋升答辩
- redis实现分布式锁天然的缺陷
- Spring Boot 集成 MyBatis
- 杜甫被后人称为什么居士,春望的作者杜甫被后人称为什么
- JavaScript 中的“提升”是怎么回事?
- 详解Java反序列化漏洞
- 前端如何解决跨域问题?
- 负载均衡 LVS 与 Nginx 对比
- 我写代码时的小倔强
