我在解析Android应用程序的XML文件时遇到了一些问题。
我需要XML文件中的一些布局ID和颜色ID。我在读取字符串值时没有问题,但我不知道如何将XML布局引用转换为布局ID?谢谢你的帮助!!
我的XML文件看起来像这样:
<program
name="ProgramName"
color="@color/white"
prefLayoutId="@layout/pref" />
我的解析代码就是这样的。解析颜色/布局不起作用:
XmlPullParser xmlParser = getResources().getXml(R.xml.programlist);
int event = xmlParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
String name = xmlParser.getName();
switch (event) {
case XmlPullParser.START_TAG: {
break;
}
case XmlPullParser.END_TAG: {
if(name.equals("program")) {
ProgramInfo pi = new ProgramInfo();
pi.name = xmlParser.getAttributeValue(null, "name");
// HERE I need something like COLOR.Black;
pi.color = Integer.valueOf(xmlParser.getAttributeValue(null, "color"));
// HERE I need something like R.layout.pref
pi.pref = Integer.valueOf(xmlParser.getAttributeValue(null, "prefLayoutId"));
result.add(pi);
}
break;
}
}
event = xmlParser.next();
答案 0 :(得分:1)
试试这个:
Resources resources = getResources();
XmlResourceParser xmlParser = resources.getXml(R.xml.programlist);
...
int resourceId = xmlParser.getAttributeResourceValue(null, "color", 0);
pi.color = (resorceId == 0) ? SOME_DEFAULT_COLOR : resources.getColor(resourceId);
pi.pref = xmlParser.getAttributeResourceValue(null, "prefLayoutId", 0);
getAttributeResourceValue将返回一个引用的资源ID,存储在相应的值中。