Java 通过Android字符串资源建立索引
好的,我已经有了代码,可以对字符串资源进行索引。现在,如何在不知道其名称的情况下获取特定资源项的值 以下是索引循环:Java 通过Android字符串资源建立索引,java,android,Java,Android,好的,我已经有了代码,可以对字符串资源进行索引。现在,如何在不知道其名称的情况下获取特定资源项的值 以下是索引循环: Field[] fLst = R.string.class.getFields(); for(Field f : fLst){ Log.i(dbgTag, "Field Entry: R.string." + f.getName()); } 感谢您的努力…首先,您知道资源的名称。你甚至把它放在你的日志中。因此,一个选项是对资源对象使用getIdentifier()(通
Field[] fLst = R.string.class.getFields();
for(Field f : fLst){
Log.i(dbgTag, "Field Entry: R.string." + f.getName());
}
感谢您的努力…首先,您知道资源的名称。你甚至把它放在你的
日志中。因此,一个选项是对资源对象使用getIdentifier()
(通常通过调用活动或其他上下文上的getResources()
来获得)
或者,假设您有字段
对象,调用f.getInt(R.string.class)
在这两种情况下(getIdentifier()
或getInt()
),您现在拥有了资源的数字标识符,此时您可以在活动中调用getString()
,以获取实际的字符串值
使用反射——无论是直接使用还是通过getIdentifier()
——都会很慢。请尽可能避免您正在尝试的方法。如果您必须使用反射,请确保缓存结果,这样您就不必重复执行相同的查找。非常感谢。当然,现在看起来很明显。而且,是的,我完全知道使用反射的代价。脱离主题,但与字符串资源相关:如果应用程序是单语的,并且需要显示“请输入小于100的值”之类的小祝酒词,我们是否仍然应该遵循字符串资源方法?