以下代码在Galaxy S4上运行正常,但我收到了来自注释3设备的错误报告,说明"#4367行的空指针异常"
我无法理解为什么会发生这种情况,因为for循环是用fileArray.length测试的;
我可能错了;请对此问题提出一些建议。
谢谢。
File fileArray[] = getExternalFilesDirs(null);
String fileArayAsPathArray[] = new String[fileArray.length];
for(int i=0; i<fileArray.length; i++){
fileArayAsPathArray[i] = fileArray[i].getAbsolutePath();
}
答案 0 :(得分:1)
文件数组本身必须在某个合法索引处具有null。您需要围绕它进行编码。类似的东西:
List<String> fileArayAsPathList = new ArrayList<String>();
for(int i=0; i<fileArray.length; i++){
if(fileArray[i] != null){
fileArayAsPathList.add( fileArray[i].getAbsolutePath());
}
}
答案 1 :(得分:0)
From the documentation of getExternalFilesDirs:
如果存储设备不可用,则返回的路径可能为空。
所以你应该检查null:
File fileArray[] = getExternalFilesDirs(null);
if (filesArray != null) {
String fileArayAsPathArray[] = new String[fileArray.length];
for(int i=0; i<fileArray.length; i++) {
if(fileArray[i] != null) {
fileArayAsPathArray[i] = fileArray[i].getAbsolutePath();
}
}
}