HarmonyOS 鸿蒙Next ArkUI的资源Resource类型怎么转为string
HarmonyOS 鸿蒙Next ArkUI的资源Resource类型怎么转为string
请参看:ResourceManager.getStringSync9+
例子:
try {
let testStr: string = this.context.resourceManager.getStringSync($r('app.string.test').id);
} catch (error) {
console.error(`getStringSync failed, error code: ${error.code}, message: ${error.message}.`)
}
详见:
更多关于HarmonyOS 鸿蒙Next ArkUI的资源Resource类型怎么转为string的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
resourceManager 这个是不是在ets文件中不好使啊
getContext(this).resourceManager.getStringSync($r(‘app.string.tip_dictation’).id)
已经找到解决办法了,感谢
想了个比较笨的办法将Resource传给String类然后调用toString()方法
let str = new String($r('app.string.xxx')).toString()
不太行
context.resourceManager.getStringSync
context.resourceManager.getStringByNameSync
这2个API都可以
还是不行
stage框架,page中用以下代码,qin测成功
let context: Context = getContext(this);
let manager = context.resourceManager;
try {
manager.getStringValue($r('app.string.Label').id, (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let str = value;
}
});
} catch (error) {
console.error(`callback getStringValue failed, error code: ${error.code}, message: ${error.message}.`)
}
这个方法确实可以取到string的value。但这是回调函数的方式,API文档里还有异步的方式。
但是我的使用场景是设置state的初始化 @State pageTitle: string = ‘todo’ // TODO: load value from resources string.json
是不是应该有更优雅的方式?
楼主你好,试下JSON.stringify(xxx)这个方法
ets,你确定有这个函数?
可以用这个函数的
我这提示没有。ets
在HarmonyOS鸿蒙系统的ArkUI框架中,Resource类型通常用于管理应用中的各类资源,如字符串、颜色、图片等。若要将Resource类型中的资源转为string类型,可以直接使用资源引用方式并结合$r
语法(假设你在JS环境中)。
具体操作如下:
-
资源定义:首先,确保在
resources
目录下的json
文件中定义了字符串资源。例如,resources/base/strings.json
中定义:{ "welcome_message": "Hello, HarmonyOS!" }
-
资源引用:在ArkUI的JS代码中,可以通过
$r
语法引用该资源,并自动转换为string类型。例如:[@Entry](/user/Entry) [@Component](/user/Component) struct MyComponent { build() { let message = $r('strings.welcome_message'); console.log(message); // 输出: Hello, HarmonyOS! return new Text(message); } }
这样,$r('strings.welcome_message')
会解析为Hello, HarmonyOS!
,并作为string类型使用。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html