获取列表的大小会导致我的程序崩溃

时间:2012-07-17 21:25:29

标签: java android list arraylist

这只是一个行文件。

当我用其他东西调用.size()时(比如将它附加到一串空格),它会吐出一些东西,那么为什么单独调用该函数会崩溃呢?

int pos =0;
List<List<String>> mine = new ArrayList<List<String>>();
while((nextLine = csvReader.readLine()) != null) {
    mine.add(pos,new ArrayList <String>());
    for (String token : nextLine.split(",")) {

        //get next token and store it in the list
        mine.get(pos).add(token); 
        //Toast.makeText(MainActivity.this,mine.size() + " " + mine.get(pos).size(), Toast.LENGTH_SHORT).show();
    }

    //Toast.makeText(MainActivity.this, " " + mine.get(pos).size(), Toast.LENGTH_SHORT).show(); //doesn't crash here

    //  mine_end= mine.get(pos).size(); //crash here

    pos ++;
}

这是最新的错误堆栈跟踪:

07-17 15:52:44.987:E / wpa_supplicant(29035):正在进行扫描行动...... 07-17 15:52:46.989:E / wpa_supplicant(29035):正在进行的扫描动作...... 07-17 15:52:48.991:E / wpa_supplicant(29035):正在进行的扫描动作...... 07-17 15:52:49.061:E / AndroidRuntime(1249):致命异常:主要 07-17 15:52:49.061:E / AndroidRuntime(1249):android.content.res.Resources $ NotFoundException:字符串资源ID#0x1 07-17 15:52:49.061:E / AndroidRuntime(1249):在android.content.res.Resources.getText(Resources.java:221) 07-17 15:52:49.061:E / AndroidRuntime(1249):在android.widget.Toast.makeText(Toast.java:284) 07-17 15:52:49.061:E / AndroidRuntime(1249):at com.jimmyc.summer.wificollection.MainActivity.match(MainActivity.java:137) 07-17 15:52:49.061:E / AndroidRuntime(1249):at com.jimmyc.summer.wificollection.MainActivity.access $ 2(MainActivity.java:91) 07-17 15:52:49.061:E / AndroidRuntime(1249):at com.jimmyc.summer.wificollection.MainActivity $ 2 $ 1 $ 1.run(MainActivity.java:383) 07-17 15:52:49.061:E / AndroidRuntime(1249):在android.os.Handler.handleCallback(Handler.java:587) 07-17 15:52:49.061:E / AndroidRuntime(1249):在android.os.Handler.dispatchMessage(Handler.java:92) 07-17 15:52:49.061:E / AndroidRuntime(1249):在android.os.Looper.loop(Looper.java:130) 07-17 15:52:49.061:E / AndroidRuntime(1249):在android.app.ActivityThread.main(ActivityThread.java:3691) 07-17 15:52:49.061:E / AndroidRuntime(1249):at java.lang.reflect.Method.invokeNative(Native Method) 07-17 15:52:49.061:E / AndroidRuntime(1249):at java.lang.reflect.Method.invoke(Method.java:507) 07-17 15:52:49.061:E / AndroidRuntime(1249):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:907) 07-17 15:52:49.061:E / AndroidRuntime(1249):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 07-17 15:52:49.061:E / AndroidRuntime(1249):at dalvik.system.NativeStart.main(Native Method) 07-17 15:52:49.071:E /(306):Dumpstate&gt; /数据/日志/ dumpstate_app_error

2 个答案:

答案 0 :(得分:2)

mine.get(pos)很可能正在返回null,因此会发生NullPointerException。确保您已初始化列表中的每个pos位置。

答案 1 :(得分:0)

错误完全不相关。我想我不应该使用Toast消息进行调试。在这种情况下,它影响了时间并让我相信.size()导致错误。