2016-07-29 11 views
-2

私はXMLPullParserを使用してファイルからxmlファイルを読み込むAndroidスタジオを使用してAndroidアプリケーションを作成しています。今度はこのクラスでgetApplicationContextメソッドを使用する必要がありますが、Context変数を宣言するとこのメソッドを解決できません。どうしたらいいですか?アンドロイドの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

アクティビティを拡張したい、これまでコンテキストとしてctxを使うのか? –

答えて

2

パラメータとしてContext(またはApplicationを)取るXMLPullParserHandlerにコンストラクタを追加します。その値をXMLPullParserHandlerのフィールドに格納します。必要に応じてそのフィールドを使用します。

+1

public XMLPullParserHandler(コンテキストコンテキスト){ this.context = context; }それは本当ですか? –

+0

@AliSaravani:そうです、それは私が心に留めていたものです。 – CommonsWare

0

コンストラクタを作成し、この中にパラメータとしてコンテキストを追加します。

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

今、あなたは

関連する問題