HarmonyOS getDrawableDescriptor获取指定名称的icon内容时报错,$r()不能接受动态变量吗

let onlineID = 'app.media.icon_' + deviceIcon + '_on'
let onlineID2 = 'app.media.icon_3_001_27_on'
try {
  getContext().resourceManager.getDrawableDescriptor($r(onlineID2 as string).id)
} catch (error) {
  let code = (error as BusinessError).code
  let message = (error as BusinessError).message
  isContainOn = false
}

这种情况是报错是入参有问题,$r()接受string,不明白为啥不行

HarmonyOS
2024-12-27 17:31:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

$r()是编译时处理,不支持程序运行时动态改变。详细请参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-localization-10-V5

可以使用map数组初始化时通过r('xxx')获取到不同的resource,动态获取时通过对应key从map中获取对应的resource;当前主要是因为r(onlineID2 as string).id这个地方获取的id为-1,并未获取到正确的资源id。

分享
微博
QQ
微信
回复
2024-12-27 19:25:40
相关问题
HarmonyOS constraintSize支持状态变量
297浏览 • 1回复 待解决
态变量和常规变量有什么区别?
684浏览 • 2回复 待解决
HarmonyOS 获取推送token时报错1000900010
573浏览 • 1回复 待解决
HarmonyOS taskpool参数是状态变量crash
67浏览 • 1回复 待解决
HarmonyOS态变量不刷新问题
726浏览 • 1回复 待解决
ArkTS中如何监听状态变量变化?
1255浏览 • 1回复 待解决
关于状态变量@state必须知道
1475浏览 • 1回复 待解决