2012-01-03 3 views
0

私は 'res'フォルダにXMLファイルを読み込む際にいくつかの問題を抱えていましたが、私のアプリのアクティビティに関する問題を絞り込んだと思います。私のアプリケーションのアクティビティを取得する

NullPointerException次の行にあります。

ここに私のコードがあります。これを行うにはより良い、あるいは正しい方法がありますか?ここで

1. Activity activity = this; 

2. Resources res = activity.getResources(); 

3. XmlResourceParser xpp = res.getXml(R.xml.encounters); 

クラスです:

public class XmlParser extends Activity { 


public XmlParser() 
    throws XmlPullParserException, IOException 
{ 
    try { 
     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setValidating(false); 

     Activity activity = this; 
     Resources res = activity.getResources(); 
     XmlResourceParser xpp = res.getXml(R.xml.encounters); 

    } catch (Exception e) { 
     String stackTrace = Log.getStackTraceString(e); 
     Log.e("error", stackTrace); 
    } 
    } 
} 

そして、私は上のエラーを取得しています "リソースのres =のactivity.getResources();"ライン... ありがとう!

+2

'this'は何? –

+0

これはアプリを参照していると思いましたか?私は間違っていると思いますか? – SkyeBoniwell

+1

@ 999cm999残念なことに 'this'はコードが現在実行しているクラスのインスタンスを参照しています。何が起きているのか把握するために、もっとコードを投稿する必要があります。 –

答えて

3

thisまたはactivityに問題があり、ここに欠落しているコードがいくつかあります。 thisは決してヌルではなく、2がすぐに1に続く場合、activityはnullにはならないので、あなたが入れたコードはNPEを生成するべきではありません。 thisActivityのインスタンスではない可能性がありますが、NPEではなくコンパイルエラーが発生する可能性があります。

編集ああ、私はあなたの問題を見ると思います。 onCreate()を上書きする必要があり、このActivityはAndroidフレームワークによってインスタンス化されます。次に、すべてのコードをコンストラクタから移動してonCreate()メソッドに配置する必要があります。しかし、これはアプリケーションがAndroidでどのように動作するかを根本的に理解していることを示していると思います。代わりに、Eclipseで標準のAndroidアプリケーションを作成することです。それはあなたのための基本的な活動を作成します。そこからサブクラスActivityXmlParserクラスから削除し、コンストラクタをContext引数に変更します。そこから、他のActivityXmlParserをインスタンス化します。これはEclipseによって作成されたものです。

私はあなたがリソースにアクセスすることになっているかを理解するために開発者向けドキュメント内のアプリケーションの基礎の上に読んでいくつかの時間を費やすべきだと思う、と述べたことのすべて

などの詳細については

編集2Activitiesチェックアウトthis link。また、this SO post for how to do what you're trying to doをチェックしてください。

+0

私は上の私の主な質問にクラスを追加しました...ありがとう – SkyeBoniwell

+0

うわー、それは私の頭の上に飛んだ。私は 'http://developer.android.com'のドキュメントを読んでいます。上に書いたことを説明するのに役立つものはありますか? - ありがとう! – SkyeBoniwell

+0

素晴らしいクリス、ありがとう! – SkyeBoniwell

1

あなたはActivityクラスの内部でそのコードを実行するなら、あなたは、単に行うことができます:

Resources res = this.getResources(); 

XmlResourceParser xpp = res.getXml(R.xml.encounters); 
関連する問題