我有两个活动类的android。主活动类包含xml解析,我试图将从那里获取的数据传递给另一个活动类,该活动类将把它放入所有数据的列表视图中。在xml解析主要活动下面的问题是,当我运行程序时它显示nullpointer异常。我被困在这里任何人都可以帮助我在哪里是错误。 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;
}
}
答案 0 :(得分:1)
解析器方法getEventsFromAnXML
中的行:
if (eventType == XmlPullParser.START_DOCUMENT)
{
al.add(xpp.getName());
}
可能会以NullPointerException
结尾,因为还没有读取任何内容,并且 null
值将作为ArrayList
的第一个成员添加。
API文档中的XmlPullParser.START_DOCUMENT
:
表明解析器位于文档的最开头 还没有读过。只能通过调用来观察此事件类型 第一次调用next(),nextToken或nextTag()之前的getEvent()。
此外,如果getEventsFromAnXML
类中包含Activity
方法,则应删除参数,只需使用 this
即可。共享Context
绝不是一个好习惯,它最常会泄漏。