2016-07-29 91 views
-2

我正在使用Android Studio编写一个Android应用程序,该应用程序使用XMLPullParser从文件中读取xml文件。现在我需要在这个类中使用getApplicationContext方法,但是当我声明一个Context变量不能解析这个方法。我该怎么做?android中的getApplicationContext方法

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

public XMLPullParserHandler(Context context){this.context = context; }是真的吗? –

+0

@AliSaravani:是的,这正是我想到的。 – CommonsWare

0

创建一个构造函数并添加上下文作为参数,就像这样。

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

现在使用ctx如在任何你想

相关问题