索引0无效,大小为0.无法添加到arrayList

时间:2014-02-21 12:51:43

标签: java android arraylist

我有这段代码

ArrayList<File> internalPaths = new ArrayList<File>();
ArrayList<File> externalPaths = new ArrayList<File>();

for (int i = 0; i < pathCounter; i++) {

    Log.e("PK", Integer.toString(pathCounter));
    if (i == 0) {
        // first path
        String path = pathString.substring(commaPositions[i],
            commaPositions[i + 1] + 1);

        if (path.length() > 7 && path.substring(0,8).contains("storage")) {
            externalPaths.add(new File(path));
        } else {
            internalPaths.add(new File(path));
        }
    }
}

部分失败

else {
    internalPaths.add(new File(path));
}

例外:

  

索引0无效,大小为0。

我想知道它是如何可能的,因为添加到externalPaths没有问题,但是internalPaths会出现此错误。

2 个答案:

答案 0 :(得分:1)

  

部分失败

else {
    internalPaths.add(new File(path));
}

InternalPaths是一个初始化的ArrayList(不是NullPointerException),它的add方法应该在数组的末尾添加一个项而不是put它在特定的位置(索引位置) )。因此,问题应该在File的构造函数中。调试并检查path的值。我打赌它是一个空字符串。弄清楚如何将其初始化为这样的值。

答案 1 :(得分:0)

if (path.length() > 7
                        && path.substring(0,8).contains("storage")) {

子串索引0,8可能导致字符串短于8个字符的问题。您也可能需要处理空字符串大小写。