问题是我有各种XML文件,其中包含我的应用程序所需的数据,我想访问它们以XML文件的名称读取它们:" fileName.xml"所以我可以运行pull解析器。由于程序只知道要通过字符串加载的文件,我不能使用r.id.fileName.xml
来调用它们。
我尝试过这样的事情:
int resID = getResources().getIdentifier("r.id.fileName", "id", getPackageName());
然后通过此resID调用它...但它似乎不起作用(resID始终为0):(
有什么想法吗?
谢谢!
答案 0 :(得分:0)
从性能角度来看,最佳解决方案是在Java代码中使用某个字符串和资源ID值之间的映射:
private static HashMap<String, Integer> RESOURCES=new HashMap<>();
static {
RESOURCES.put("thingy", R.xml.thingy);
RESOURCES.put("thingy2", R.xml.thingy2);
// and so on
}
然后,您只需调用RESOURCES.get()
即可检索ID值,而无需使用getIdentifier()
内部的反射。
如果您真的想使用getIdentifier()
,则语法为:
int resID = getResources().getIdentifier("fileName", "xml", getPackageName());
,因为:
res/xml/
中的文件不是id
资源