HarmonyOS 鸿蒙Next ResouceStr如何转化成string类型

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ResouceStr如何转化成string类型

Resource类型可以通过getContext(this).resourceManager的方法取到,那如果定义的是ResourceStr类型,也就是存在Resource和String同时可以,如何去判断是Resource和string从而去使用Resource的方法 去转化成string类型呢?还是有更好的方法去解决?

关于HarmonyOS 鸿蒙Next ResouceStr如何转化成string类型的问题,也可以学学鸿蒙Next教程:https://www.itying.com/goods-1204.html

5 回复

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

解决了吗老哥 ,你是怎么处理的啊
楼主您好,目前鸿蒙中就是通过@ohos.resourceManager模块提供的getStringSync去获取的。

是的,我找到了原因,因为我是通过变量this.name = $r(‘app.string.name’) getStringSync(this.name)去取,是取不到的,也不知道为什么

我的知识可能是错误的。你可以先参考一下。ResourceManager确实可以通过getContext().getResourceManager()获取,这允许你访问资源,如字符串、颜色、尺寸等。

对于Resource类型和String类型的问题,HarmonyOS可能并没有直接提供一个类型如ResourceStr
但是你可能会遇到类似的情况,比如在某些地方你可能需要处理可能是资源ID也可能是直接字符串的情况。

通常,你可能在配置文件或代码中指定一些字符串资源,例如:

xml<br>&lt;!--&nbsp;在resources/strings.xml中&nbsp;--&gt;<br>&lt;value&nbsp;name="app_name"&gt;Hello&nbsp;World&lt;/value&gt;<br>

然后在代码中引用:

js<br>let&nbsp;appName&nbsp;=&nbsp;context.getString($r("string.app_name"));<br>

这里$r("string.app_name")返回的是资源ID,是一个number类型,而context.getString(resourceId)会根据这个ID去资源文件中查找并返回对应的字符串。

如果你的代码中接受的参数可能是资源ID也可能是直接的字符串,你可以通过类型检查来决定如何处理。例如:

js<br>let&nbsp;value&nbsp;=&nbsp;...;&nbsp;//&nbsp;可能是resource&nbsp;ID,也可能是字符串<br><br>if&nbsp;(typeof&nbsp;value&nbsp;===&nbsp;'number')&nbsp;{<br>&nbsp;&nbsp;//&nbsp;这是一个资源ID,需要转换为字符串<br>&nbsp;&nbsp;value&nbsp;=&nbsp;context.getString(value);<br>}<br><br>console.log(value);<br>
也可能
更好的方式是,改变设计,避免在一处代码中同时处理资源ID和字符串。例如,你可以总是使用字符串,然后在需要的时候通过context.getString()从资源ID转换为字符串。这样可以使代码更清晰,也更容易理解。

回到顶部