eclipse空指针异常调试

时间:2010-08-19 17:14:09

标签: android eclipse

我在一些活动中有以下代码,它可以很好地读取和解析XML文件,但是在阅读小型XML文件时我有两个活动,我得到一个空指针异常,无法弄清楚问题是什么:

while (eventType != XmlResourceParser.END_DOCUMENT) {
    if ((eventType == XmlResourceParser.START_TAG) ||
        (eventType == XmlResourceParser.TEXT)) {
        // Get the name of the tag (eg scores or score)
        String strName = xmlSymptoms.getName();
        if (helpFound == 1){
            helpText  = xmlSymptoms.getText();
            helpFound = 0;
        } else if (strName.equals("string") && (eventType == XmlResourceParser.START_TAG)) {
            helpFound = 1;
        }

    }
    eventType = xmlSymptoms.next();
}

当我在“<string>”中阅读时,会发生空指针异常,我可以在其他活动中使用相同的代码读入。在此活动中,我可以读取其他XML令牌,直到我转到“<string>”。

这是我的调试窗口

线程[&lt; 1&gt;主要](暂停)
    ActivityThread.performLaunchActivity(ActivityThread $ ActivityRecord,Intent)行:2628
    ActivityThread.handleLaunchActivity(ActivityThread $ ActivityRecord,Intent)行:2679
    ActivityThread.access $ 2300(ActivityThread,ActivityThread $ ActivityRecord,Intent)行:125     ActivityThread $ H.handleMessage(消息)行:2033
    ActivityThread $ H(Handler).dispatchMessage(Message)行:99     Looper.loop()行:123     ActivityThread.main(String [])行:4627
    Method.invokeNative(Object,Object [],Class,Class [],Class,int,boolean)line:not available [native method]
    Method.invoke(Object,Object ...)行:521
    ZygoteInit $ MethodAndArgsCaller.run()行:868
    ZygoteInit.main(String [])行:626     NativeStart.main(String [])行:不可用[native method]
线程[&lt; 6&gt; Binder Thread#2](正在运行) 线程[&lt; 5&gt; Binder Thread#1](正在运行)

我运行了LogCat,但没有显示任何内容。

以下是一些有效的XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>A</key>
<array>
        <string>ABANDONED, feeling:     </string>
        <string>ABSCESS:        </string>
</array>
</dict>
</plist>

这里有一些不起作用的XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"   "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>HOWTOTAKE</key>  
  <array>
  <string> Put two pellets in 8 oz bottle of water.</string>
  </array>
</dict>
</plist>

最后一点:当我到达“<string>”字段时,getName()返回“null”而不是“string”。显然是想告诉我一些事情,我无法弄清楚为什么会返回“null”。

任何想法如何调试这个?

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么。由于我正在寻找XmlResourceParser.TEXT,当(eventType == XmlResourceParser.TEXT)为true时,strName.equals(“string”)为null。将代码更改为仅在(eventType == XmlResourceParser.START_TAG)为true时检查(strName.equals(“string”),修复了问题,如下面的代码所示:

while (eventType != XmlResourceParser.END_DOCUMENT) {
    if ((eventType == XmlResourceParser.START_TAG) ||
        (eventType == XmlResourceParser.TEXT)) {
        // Get the name of the tag (eg scores or score)
        String strName = xmlSymptoms.getName();
        if (helpFound == 1){
            helpText  = xmlSymptoms.getText();
            helpFound = 0;
        } else if ( (eventType == XmlResourceParser.START_TAG)) {
            if (strName.equals("string") ){
                helpFound = 1;
            }
        }

    }
    eventType = xmlSymptoms.next();
}
}