Arkts解决方案<Ability -动态设置label>
Ability的label动态设置方案
·
当存在多个Ability,一个UIAbility拉起新的Ability时,在多任务窗口会显示多个Ability,这时候我们想对每一个Ability设置独立的label(多窗体的title)时,应该如何操作?
静态(标签)配置(适合固定label)
module.json5文件:在abilities或extensionAbilities标签下添加label字段:
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
},
{
"name": "EntryAbility1",
"srcEntry": "./ets/entryability1/EntryAbility1.ets",
"description": "$string:EntryAbility1_desc",
"icon": "$media:layered_image",
"label": "$string:EntryAbility1_label",
"startWindowIcon": "$media:startIcon",
"exported": true,
"startWindowBackground": "$color:start_window_background"
}
]
然后在string.json文件中进行资源定义
{
"string": [
{
"name": "EntryAbility_label",
"value": "主页面"
}
]
}
这时候拉起的Ability会显示配置的label名称。
代码动态设置(多用于小程序等)
1、在使用Want进行跳转时设置跳转参数:parameters,设置如下:
let want: Want = {
bundleName: 'com.test.testmodules', // 应用唯一标识
moduleName: 'entry',
abilityName: 'EntryAbility1', // 目标Ability名称
parameters:{ // 跳转携带参数
label:'ssss' // label名称随意设置,没有严格要求使用字段
}
};
this.context.startAbility(want); // 触发跳转
2、在Ability的onCreate中获取跳转携带的参数。
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
const label = want.parameters?.label as string // 获取跳转携带数据
this.context.setMissionLabel(label).then(() => { // 设置Ability的label
console.info('success');
}).catch((err: BusinessError) => {
let code = (err as BusinessError).code;
let message = (err as BusinessError).message;
});
}
被拉起的Ability的label被设置成ssss,效果如下:
更多推荐



所有评论(0)