我正在尝试使用getResources()。getXml,以便我可以访问“res”文件夹中的XML文件。显然,从我读过的内容来看,我需要这样的东西:
XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);
所以我把它放入,我也导入了“android.content.Context”
但我一直在'上下文'上收到错误消息: 无法对非静态字段上下文进行静态引用
有没有办法解决这个问题?
以下是我的全部代码:
package t.HelloAndroid;
import java.io.IOException;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.content.res.XmlResourceParser;
import android.content.Context;
import android.app.Activity;
public class XmlParser {
public static void main (String args[])
throws XmlPullParserException, IOException
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
//XmlResourceParser xrp = context.getResources().getXml(R.xml.encounters);
XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
} else if(eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag "+xpp.getName());
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
System.out.println("End document");
}
}
答案 0 :(得分:2)
在上下文地点使用您的活动名称。
答案 1 :(得分:1)
确保此语句位于非静态方法中。
答案 2 :(得分:1)
您发布的代码无法使用,因为context
仅适用于Android应用中的活动(或类似内容)。只是通过main()
调用它不会为您设置正确的上下文(在上面的示例中它甚至是null
并且会导致NPE)。