2010-05-30 137 views
2

好的,我已经有了允许我通过字符串资源索引的代码。现在,如何在不知道名称的情况下获取特定资源项目的价值?通过Android字符串资源索引

这里的指数环:

Field[] fLst = R.string.class.getFields(); 

for(Field f : fLst){ 

    Log.i(dbgTag, "Field Entry: R.string." + f.getName()); 

} 

感谢你的努力...

回答

2

首先,你知道资源的名称。你甚至把它放在你的Log电话。因此,一种选择是在Resources对象上使用getIdentifier()(通常通过在Activity或其他Context上调用getResources()获得)。

或者,假设您有Field对象,请致电f.getInt(R.string.class)

在这两种情况下(getIdentifier()getInt()),你现在有资源的数字标识符,此时你可以打电话getString()Activity以获得实际String值。

使用反射 - 无论是直接还是通过getIdentifier() - 都会变慢。请尽可能避免您尝试的方法。如果您绝对必须使用反射,请确保缓存结果,因此不需要重复执行相同的查找。

+0

非常感谢。当然,现在看起来非常明显。 而且,是的,我完全意识到使用反射的花费。 – gssi 2010-05-30 14:34:34

+0

偏离主题,但与字符串资源相关: 如果应用程序是单语言的,并且需要显示_“请输入小于100的值”_这样的小Toast,我们是否应该遵循_String Resource_方法? – 2014-12-08 13:50:53