在移除位置时获得ArrayIndexOutOfBoundsException
因为位置从1开始但数组索引从0开始。你能提供一个解释如何解决这个问题吗?
if (isChecked && groupName.equals(OLIConstants.FAILED_TO_ACTIVATE))
{
count = count + 1;
arrActivation.add(childPosition);
context.getSummaryFragment().getOli(arrActivation,groupPosition);
if (!context.getSummaryFragment().activateSystem.isEnabled())
{
context.getSummaryFragment().enableButton(true);
}
}
else if (!isChecked && groupName.equals(OLIConstants.FAILED_TO_ACTIVATE))
{
count = count - 1;
arrActivation.remove(childPosition);
}
context.getSummaryFragment().getOli(arrActivation,groupPosition);
if (context.getSummaryFragment().activateSystem.isEnabled() && count <= 0)
{
context.getSummaryFragment().enableButton(false);
}
}
答案 0 :(得分:0)
您可以使用arrActivation.add(childPosition-1);
希望这能解决您的问题。
答案 1 :(得分:0)
我将根据您的代码做出假设:
childPosition是您要存储在ArrayList arrActivation中的数据。
arrActivation.add(childPosition);
childPosition是一个整数(因为你得到一个超出绑定异常的数组索引。
arrActivation.remove(childPosition);
现在,如果您尝试添加一个整数并使用相同的参数将其删除,则可能会获得AIOOB异常。看看:
ArrayList here = new ArrayList();
here.add(5);
// The following line will exception because
// The length of the array list is 1 at this point
here.remove(5);
但这会奏效:
ArrayList here = new ArrayList();
here.add(5);
// The following line will not exception
here.remove(Integer.valueOf(5));
因为现在我们正在使用remove(Object o)(使用Object o查找数据,并删除第一次出现)函数而不是remove(int index)(它试图删除arraylist的索引的索引)函数
我希望这会有所帮助:)