我正在使用Android Studio编写Android应用程序,使用XMLPullParser
从文件中读取xml文件。现在我需要在这个类中使用getApplicationContext
方法,但是当我声明一个Context变量时,不能解析这个方法。我该怎么办?
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
public class XMLPullParserHandler {
private List<App> apps= new ArrayList<App>();
private App app;
private String text;
public List<App> getApps() {
return apps;
}
public List<App> parse(InputStream is) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagname = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if (tagname.equalsIgnoreCase("app")) {
app = new App();
}
break;
case XmlPullParser.TEXT:
text = parser.getText();
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("app")) {
apps.add(app);
}else if (tagname.equalsIgnoreCase("id")) {
app.setId(Integer.parseInt(text));
} else if (tagname.equalsIgnoreCase("title")) {
app.setTitle(text);
} else if (tagname.equalsIgnoreCase("activity")) {
app.setActivity(text);
} else if (tagname.equalsIgnoreCase("location")){
app.setLocation(Integer.parseInt(text));
} else if (tagname.equalsIgnoreCase("address")){
app.setAddress(text);
}
break;
default:
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
return apps;
}
}
答案 0 :(得分:2)
向XMLPullParserHandler
添加一个构造函数,该构造函数将Context
(或Application
)作为参数。将该值存储在XMLPullParserHandler
上的字段中。根据需要使用该字段。
答案 1 :(得分:0)
创建一个构造函数并在其中添加上下文作为参数,有点像这样。
Context ctx;
public XMLPullParserHandler(Context context)
{
this.ctx=context;
}
现在使用ctx
作为您想要的上下文