自学鸿蒙应用开发(22)- 定义和使用字符串资源
共 2293字,需浏览 5分钟
·
2021-01-28 21:46
本文介绍在鸿蒙应用开发过程中字符串资源的使用方法。
定义字符串资源
到到这篇文章之前,我们的所有字符串都是直接在代码中或者是嗯布局文件中直接使用的。这种方法虽然简单明快,但是如果我们需要修改这些字符串的时候,就需要在各处寻找定义的字符串并且修改它们。另外一个问题是,如果我们在不同的地方,希望使用同一个字符串,这种分别定义和使用的方式就无法满足需求。通过资源文件定义字符串可以解决这个问题。具体定义的方法参考下面string.json文件中的代码。:
{
"string": [
{
"name": "app_name",
"value": "HelloHarmony"
},
{
"name": "mainability_description",
"value": "Java_Phone_Empty Feature Ability"
},
{
"name": "hello_message",
"value": "你好,鸿蒙!!!"
}
]
}
开发者可以通过指定name和value两个属性任意定义自己的字符串资源。接下来我们将会以布局文件和代码两种方式来使用这个字符串资源。
在布局中使用字符串资源
下面的定义是布局文件的一部分,他在为text文本指定内容的时候,没有直接使用字符串,而是指定了字符串的ID。
ohos:id="$+id:text_hello"
ohos:height="match_content"
ohos:width="match_content"
ohos:layout_alignment="horizontal_center"
ohos:background_element="$graphic:background_ability_text"
ohos:text="$string:hello_message"
ohos:text_size="100"
/>
具体的格式是:$string:加上字符串资源文件中定义字符资源时(string.json第12行)使用的name属性。
在代码中使用字符串资源
下面是在Slice类中使用字符串资源的例子。
Text hello = (Text)findComponentById(ResourceTable.Id_text_hello);
hello.setClickedListener(new Component.ClickedListener() {
public void onClick(Component component) {
try {
ohos.global.resource.ResourceManager resManager = getContext().getResourceManager();
String hello_msg = resManager.getElement(ResourceTable.String_hello_message).getString();
new ToastDialog(getContext())
.setText(hello_msg)
.setAlignment(LayoutAlignment.BOTTOM)
.show();
} catch (IOException | NotExistException | WrongTypeException e) {
e.printStackTrace();
}
}
});
代码第5行首先通过Slice类的getContext的方法获取资源管理器ResourceManager。如果是在ability类中使用字符串资源,需要使用Ability类的getAbilityContext方法获取资源管理器。接下来使用字符串资源的ID为参数调用与ResourceManager的getElement的方法获取字符串资源之后将其转换为字符串对象即可。注意代码中使用字符串资源时ID的记法。
参考文档
资源文件的使用
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-resource-file-example-0000001051733014
新书介绍
《实战Python设计模式》是作者最近出版的新书,拜托多多关注!
本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。
对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。
觉得本文有帮助?请分享给更多人。
关注微信公众号【面向对象思考】轻松学习每一天!
面向对象开发,面向对象思考!