Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过Android字符串资源建立索引_Java_Android - Fatal编程技术网

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的值”之类的小祝酒词,我们是否仍然应该遵循字符串资源方法?