我有两个android的activity类。主activity类包含xml解析,我尝试将从那里获得的数据传递给另一个activity类,后者将把数据放入所有数据的列表视图中。下面是xml解析的主要活动,问题是,当我运行程序时,它显示空指针异常。我被困在这里了,谁能帮帮我,哪里出了错。提前Thnx
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;
}
}
发布于 2012-05-14 15:38:32
解析器方法getEventsFromAnXML
中的代码行:
if (eventType == XmlPullParser.START_DOCUMENT)
{
al.add(xpp.getName());
}
可能会在NullPointerException
中结束,因为还没有读取任何内容,并且将添加一个null
值作为ArrayList
的第一个成员。
接口文档中的XmlPullParser.START_DOCUMENT
:
表示解析器位于文档的最开始处,但尚未读取任何内容。只能通过在第一次调用next()、nextToken或nextTag()之前调用getEvent()来观察此事件类型。
此外,如果getEventsFromAnXML
方法在Activity
类中,则应该删除该参数,只需使用this
.共享Context
从来都不是一个好的做法,它通常会以泄漏告终。
https://stackoverflow.com/questions/10578754
复制相似问题