2011-12-20 4 views
0

私は 'res'フォルダ内のXMLファイルにアクセスできるように、getResources()。getXmlを使用しようとしています。どうやら私が読んだから、私はこのようなものが必要:getResources()の使い方getXml

XmlPullParser xpp = context.getResources().getXml(R.xml.encounters); 

だから私は置くことで、私はまた、インポート、「android.content.Context」

しかし、私は "上のエラーを取得しておきますは非静的フィールドのコンテキスト

をstatic参照できません。この問題を解決する方法はあります:言う文脈」?ここで

は私の全体のコードです:

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"); 
} 
} 
+1

投稿のコンテキスト:-) –

+0

私はこれを持っています:パブリッククラスXmlParser { \tプライベートコンテキストコンテキスト; \t公共の静的な無効メイン(文字列引数[]) \t \tがXmlPullParserExceptionは、IOException { XmlPullParserFactory工場= XmlPullParserFactory.newInstance()を投げます。 factory.setNamespaceAware(true); // XmlResourceParser xrp = context.getResources()。getXml(R.xml.encounters); XmlPullParser xpp = context.getResources()。getXml(R.xml.encounters); – SkyeBoniwell

+0

申し訳ありませんフォーマットはひどいです – SkyeBoniwell

答えて

1

contextは、Androidアプリ内のアクティビティ(または同様のもの)内でのみ利用可能ですので、投稿したコードは機能しません。ちょうどmain()経由でそれを呼び出すと、正しいコンテキストが設定されません(上記の例では、それもnullであり、NPEになります)。

+0

ああ、私は何かにコンテキストを割り当てる必要がありますか?ありがとう – SkyeBoniwell

2

コンテキストの場所であなたのアクティビティ名を使用します。

1

このステートメントが非静的メソッドの内部にあることを確認してください。

関連する問題