我有一个ArrayIndexOutOfBoundsException
private Size getPictureSize() {
List<Size> list = camera.getParameters().getSupportedPictureSizes();
int i = 0;
for (Size size : list) {
if (Math.min(size.width, size.height) <= 800) {
if (Math.max(size.width, size.height) > 800) {
return size;
} else {
return (i > 0 ? list.get(i - 1) : list.get(0));
}
}
i++;
}
return list.get(0);
}
这是有人要求我在将其投放市场后进行测试的应用程序的一部分,其中一个错误报告就是这一行
return (i > 0 ? list.get(i - 1) : list.get(0));
我知道这个例外意味着什么,但是可能导致什么呢?
答案 0 :(得分:1)
您的代码中存在一些问题:
return (i > 0 ? list.get(i - 1) : list.get(0));
可能会计算列表中不存在的索引; return list.get(0);
)可能会引发IndexOutOfBoundsException
。我更改了您的代码以解决这些问题。看看它是否解决了你的问题:
private Size getPictureSize() {
List<Size> list = camera.getParameters().getSupportedPictureSizes();
Size prevSize = null;
for (Size size : list) {
if (Math.min(size.width, size.height) <= 800) {
if (Math.max(size.width, size.height) > 800) {
return size;
} else {
return (prevSize == null? size : prevSize);
}
}
prevSize = size;
}
if(list.size() > 0) {
return list.get(0);
}
return null;
}