0

Androidのアクティビティクラスが2つあります。メインのアクティビティ クラスには xml 解析が含まれており、そこから取得したデータを別のアクティビティ クラスに渡して、すべてのデータのリストビューに入れようとしています。is xml parsing main activity の下にある問題は、プログラムを実行すると nullpointer exception が表示されることです。私はここで立ち往生していますエラーがどこにあるのか誰でも私を助けることができます. 事前にt​​hnx

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;

}

}

4

1 に答える 1

1

パーサー メソッドの行getEventsFromAnXML:

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

. はNullPointerException、まだ何も読み取られておらず、null値が の最初のメンバーとして追加されるため、 になる可能性がありますArrayList

XmlPullParser.START_DOCUMENTAPIドキュメントの:

パーサーがドキュメントの最初にあり、まだ何も読み取られていないことを通知します。このイベント タイプは、next()、nextToken、または nextTag()) への最初の呼び出しの前に getEvent() を呼び出すことによってのみ監視できます。

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

于 2012-05-14T07:38:32.417 に答える