@StringDef
非常适合替换Enum
。
@StringDef(Standard, Mini)
public @interface Type;
但如果我的应用需要支持英语,法语和中文呢?
因此标准可能是"标准"," Norme"和"标准"在三个不同的国家。在这种情况下,标准和迷你可能需要上下文来获得真正的价值。
我们怎样才能在使用i18n的应用中使用@StringDef
。
答案 0 :(得分:1)
没有开箱即用的解决方案。
推荐的方法是将本地化的字符串资源存储在不同的目录中(res/values-XX/strings.xml
,XX
为en
,fr
等)。
https://developer.android.com/guide/topics/resources/localization.html
在这种方法中,您需要使用字符串id来获取本地化字符串。您可以尝试以下方法:
改为使用字符串ID:
@IntDef({R.string.standard, R.string.mini})
使用一些帮助器将@StringDef
的字符串与本地化的字符串重新匹配。