我有这段代码
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
会出现此错误。
答案 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个字符的问题。您也可能需要处理空字符串大小写。