好的,我有代码允许我索引字符串资源。现在,如何在不知道其名称的情况下获取特定资源项的值?
这是索引循环:
Field[] fLst = R.string.class.getFields();
for(Field f : fLst){
Log.i(dbgTag, "Field Entry: R.string." + f.getName());
}
感谢您的努力...
答案 0 :(得分:2)
首先,您知道资源的名称。你甚至把它放在你的Log
电话中。因此,一种选择是在getIdentifier()
对象上使用Resources
(通常通过在getResources()
或其他Activity
上调用Context
来获得)。
或者,假设您有Field
个对象,请致电f.getInt(R.string.class)
。
在任何一种情况下(getIdentifier()
或getInt()
),您现在都拥有资源的数字标识符,此时您可以在getString()
上调用Activity
来获取实际的String
值。
使用反射 - 无论是直接还是通过getIdentifier()
- 都会变慢。请尽可能避免使用您正在尝试的方法。如果您绝对必须使用反射,请务必缓存结果,这样您就不需要重复执行相同的查找。