首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android xmlparsing and data data in listview

Android xmlparsing and data data in listview
EN

Stack Overflow用户
提问于 2012-05-14 15:01:00
回答 1查看 308关注 0票数 0

我有两个android的activity类。主activity类包含xml解析,我尝试将从那里获得的数据传递给另一个activity类,后者将把数据放入所有数据的列表视图中。下面是xml解析的主要活动,问题是,当我运行程序时,它显示空指针异常。我被困在这里了,谁能帮帮我,哪里出了错。提前Thnx

代码语言:javascript
运行
复制
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;

}

}

EN

回答 1

Stack Overflow用户

发布于 2012-05-14 15:38:32

解析器方法getEventsFromAnXML中的代码行:

代码语言:javascript
运行
复制
if (eventType == XmlPullParser.START_DOCUMENT)
{
    al.add(xpp.getName());
}

可能会在NullPointerException中结束,因为还没有读取任何内容,并且将添加一个null值作为ArrayList的第一个成员。

接口文档中的XmlPullParser.START_DOCUMENT

表示解析器位于文档的最开始处,但尚未读取任何内容。只能通过在第一次调用next()、nextToken或nextTag()之前调用getEvent()来观察此事件类型。

此外,如果getEventsFromAnXML方法在Activity类中,则应该删除该参数,只需使用this.共享Context从来都不是一个好的做法,它通常会以泄漏告终。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10578754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档