【发布时间】:2020-11-19 10:02:58
【问题描述】:
我的应用程序是一个基本的记事本样式应用程序,其中主要活动是一个列表,并且每个项目都可以编辑。每个项目的数据包括项目名称和文本字段列表。我目前有一个类来管理项目如下:
public class Item implements Serializeable {
private String name;
private String review;
public Item() {
name = Resources.getSystem().getString(R.string.name_movie);
description = Resources.getSystem().getString(R.string.description_like);
}
public Item(String itemname, String itemreview) {
//... followed by getters and setters
}
然后在
<string name="name_movie">movie</string>
<string name="name_movie">book</string>
<string name="name_movie">record</string>
<string name="description_like">good</string>
<string name="description_love">great</string>
等等。它们都被翻译成其他语言,我可以在代码中将它们称为
R.string.name_movie
R.string.description_like
等等。我在总结是因为你明白了。
问题是我想根据字符串资源分配值的默认构造函数。不幸的是,获取系统资源需要上下文。这些是 POJO 类,没有上下文。此外,我的主要活动将一个项目数组列表保存到一个文件中,因此我使这些项目可序列化。因为有可序列化的,我需要一个无参数构造函数,所以我不能使用静态成员变量作为上下文的构造函数,如下所示:
public Item(Context context) {
m_context = context;
}
我的问题是在一个 android 应用程序中,在可序列化的普通旧 java 对象中访问多语言字符串的最佳方法是什么?我查看了以下讨论,其中包括:getString Outside of a Context or Activity 、Access string.xml Resource File from Java Android Code 和 Static way to get 'Context' in Android?。
还有哪些其他方法可以在这些对象中使用本地化字符串?我考虑在我的项目中存储资源标识符而不是字符串,但我想让它保持打开状态以修改我的应用程序以获取用户输入的字符串,而不仅仅是从列表中选择。
【问题讨论】:
标签: java android multilingual android-resources