使用Android语言框架处理枚举名称



我有一个android应用程序,它使用了一系列用户可以看到的枚举。我不想显示枚举标题(例如GRAMS),而是希望能够使用androidstrings.xml来处理这个问题,并让它处理多种语言。

问题是在不需要获取标识符的情况下获得对字符串文件的引用(如这里所建议的)

一些代码,如果它有助于

枚举

public enum Mass implements Unit {
//SI
GRAMS,
KILOGRAMS}

strings.xml

<resources>
<string name="grams_name">grams</string>
<string name="grams_symbol">g</string>

因此,我实现的解决方案是创建一个带有开关案例的Handler方法,该方法将单元枚举转换为包含字符串.xml 中显示字符串的数据对象

public static UnitDisplayData getUnitDetails(Unit enum) {
 switch (enum.toString()) {
        // ---------ROOT UNITS----------
        case "GRAM":
            return new UnitDisplayData(
                    Mass.GRAM,
                    R.string.unit_grams_name,
                    R.string.unit_grams_symbol)
        ...
        }

虽然这确实会产生大量的锅炉板,但当android处理字符串时,这种策略在处理多种语言时有效。

也可以将这些资源引用绑定到枚举中,但出于我的目的,我不希望我的枚举依赖于应用程序。

最新更新