2012-05-14 17 views
0

私はアンドロイドの2つのアクティビティクラスを持っています。メインのアクティビティクラスにはXML解析が含まれています。そこから取得したデータを、すべてのデータのリストビューに入れる別のアクティビティクラスに渡そうとしています。以下はxmlの主なアクティビティの解析です。問題は、プログラムを実行するとnullpointer例外が表示されることです。私はここに立ち往生して誰にでもエラーがどこにあるのか教えてくれます。事前Android xmlを解析してリストビューにデータを入れる

enter code here 





/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.main); 

    try { 
     stringXmlContent = getEventsFromAnXML(this); 
     Intent i=new Intent(LocationSidActivity.this,FacebookData.class); 
     i.putStringArrayListExtra("language", stringXmlContent); 
     startActivity(i); 
     // myXmlContent.setText(stringXmlContent); 
    } catch (XmlPullParserException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 


private ArrayList<String> getEventsFromAnXML(Activity activity) 
     throws XmlPullParserException, IOException { 
    ArrayList<String> al = new ArrayList<String>(); 
    Resources res = activity.getResources(); 
    XmlResourceParser xpp = res.getXml(R.xml.myxml); 
    xpp.next(); 
    int eventType = xpp.getEventType(); 

    while (eventType != XmlPullParser.END_DOCUMENT) { 
     if (eventType == XmlPullParser.START_DOCUMENT) { 
      al.add(xpp.getName()); 
     } else if (eventType == XmlPullParser.START_TAG) { 
      //if ((xpp.getName()).compareTo("id") != 0) { 
       al.add(xpp.getName()); 
      //} else { 
       //eventType = xpp.next(); 


     } 

     else if (eventType == XmlPullParser.TEXT) { 

      al.add(xpp.getText()); 
     } 
     eventType = xpp.next(); 
    } 
    return al; 

} 

}内のthnx

+1

ここにあなたのログエラーを入力してください。問題を解決するためにnull要素がどこにあるのかを知る必要があります。 – grattmandu03

答えて

1

パーサー方法getEventsFromAnXMLの行:まだ読んで何もありませんので

if (eventType == XmlPullParser.START_DOCUMENT) 
{ 
    al.add(xpp.getName()); 
} 

は、NullPointerExceptionに終わる可能性があり、かつnullArrayListの最初のメンバーとして追加されます。

XmlPullParser.START_DOCUMENTでAPIのドキュメント

Signalizeパーサは、文書の先頭にあると 何もまだ読まなかったこと。このイベントタイプは、next()、nextToken、またはnextTag()の最初の呼び出しの前に getEvent()を呼び出すことによってのみ観察できます。

getEventsFromAnXML方法は、あなたのActivityクラスである場合も、あなたはパラメータを削除する必要があり、単にthisを使用しています。 Contextを共有することは決して良い方法ではなく、ほとんどの場合、リークが発生します。

関連する問題