HarmonyOS 鸿蒙Next通过resourceManager.getStringResource接口获取HSP资源文件报“Resource id invalid”错误

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next通过resourceManager.getStringResource接口获取HSP资源文件报“Resource id invalid”错误

通过this.resourceManager.getStringResource($r(‘app.string.PlayCount’).id)获取hsp资源文件报错:

Error messageResource id invalid

Error code9001001

SourceCodereturnResource = this.context.resourceManager.getStringSync(id);

5 回复

可能原因

未创建对应的context,传入的是一个不存在的id值。

解决措施

根据模块名创建上下文Context

let moduleContext = this.context.createModuleContext('entry');<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

然后通过getStringByNameSync获取指定资源名称对应的字符串,使用同步方式返回字符串。

import { BusinessError } from '@kit.BasicServicesKit';

try {   this.context.resourceManager.getStringByNameSync(“test”); } catch (error) {   let code = (error as BusinessError).code;   let message = (error as BusinessError).message;   console.error(getStringByNameSync failed, error code: ${code}, message: ${message}.); }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

参考链接

应用上下文Context获取本应用中其他ModuleContextgetStringByNameSync

但是har打debug包正常,打release包就不正常了

我也遇到了这个情况,你那怎么解决的?

使用getStringByName可以获取到资源,$([hsp].string.xxx)也可以使用,但是resourceManager.getString()方式 就无法获取到资源。调试看识别出来的$([hsp].string.xxx)的id是string类型,不是number类型。

遇到HarmonyOS中resourceManager.getStringResource接口报“Resource id invalid”错误时,通常是因为资源ID无效或未正确引用。请检查以下几点:

  1. 确保资源ID(如字符串ID)在resources.xml或相应的资源文件中已正确定义。
  2. 验证资源ID在代码中引用时是否拼写正确,包括大小写和路径。
  3. 检查资源文件是否已正确编译并包含在项目的构建输出中。
  4. 尝试清理并重新构建项目。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部