android中的getApplicationContext方法

时间:2016-07-29 14:08:46

标签: android android-context

我正在使用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;


   }
}

2 个答案:

答案 0 :(得分:2)

XMLPullParserHandler添加一个构造函数,该构造函数将Context(或Application)作为参数。将该值存储在XMLPullParserHandler上的字段中。根据需要使用该字段。

答案 1 :(得分:0)

创建一个构造函数并在其中添加上下文作为参数,有点像这样。

Context ctx;
public XMLPullParserHandler(Context context)
{
this.ctx=context;
}

现在使用ctx作为您想要的上下文