HarmonyOS 鸿蒙Next ArkUI的资源Resource类型怎么转为string

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

HarmonyOS 鸿蒙Next ArkUI的资源Resource类型怎么转为string

ArkUI的eTs范式框架下,$r(‘app.string.xxx’)的文本资源Resource类型怎么转化成string类型,找了半天没找到。

18 回复

请参看: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}.`)
} 

详见:

https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-resource-manager-0000001478181625-V3#ZH-CN_TOPIC_0000001478181625__getstringsync9

更多关于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都可以

试试JSON.stringify(xxx)
private source:string;
// params.source就是Resource类型
/*上一个页面的操作
router.push({
url:'pages/VideoPlay',
params: { source: this.source }
})

*/

aboutToAppear(){

    this.source=(router.getParams() as Record<string, Object>).source as string;

}

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环境中)。

具体操作如下:

  1. 资源定义:首先,确保在resources目录下的json文件中定义了字符串资源。例如,resources/base/strings.json中定义:

    {
      "welcome_message": "Hello, HarmonyOS!"
    }
    
  2. 资源引用:在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

回到顶部