根据我的要求,应用程序必须根据设备上的区域设置更改来反映字符串更改。但是这里主要使用静态Map来保存枚举,这些枚举将在区域设置更改后重新初始化。
以下是示例代码:
public enum Color{
Green(R.string.green),
Warning(R.string.red),
ENSLow(R.string.blue),
Zero(R.string.orange),
private static Map<String, Color> colorMap = new HashMap<String, Color>();
private final int mResId;
}
static {
for Color color : values()) {
colorMap .put(appContext.getResources().getString(state.mResId), color);
}
}
Color(int resId) {
mResId = resId;
}
请建议我如何避免使用静态地图获取颜色?
答案 0 :(得分:0)
不要以这种方式创建自己的常量。 Android已经为你做了。
只需使用appContext.getResources().getString(R.string.green)
来自Supporting Different Languages:
在运行时,Android系统根据当前为用户设备设置的区域设置使用适当的字符串资源集。
所以你的字符串已经被缓存了。