【问题标题】:ArrayIndexOutOfBoundsException after checking size检查大小后的 ArrayIndexOutOfBoundsException
【发布时间】:2015-03-04 08:02:21
【问题描述】:

适配器中的用户报告了此错误。我无法重现:

java.lang.ArrayIndexOutOfBoundsException: length=8; index=8

在这一行

if (columnas.get(column).getENTR() == 3)

但我不明白,因为我之前检查过if (columnas.size() > column)。我该如何解决这个错误?示例代码如下。

private List<bdcolums> columnas = new ArrayList<bdcolums>();

 private View getHeader(final int row, final int column, View convertView, final ViewGroup parent) {
    final ViewHolder holder;
    if (convertView == null || convertView != inflater.inflate(R.layout.item_table_header, parent, false)) {
        convertView = inflater.inflate(R.layout.item_table_header, parent, false);
        holder = new ViewHolder();
        holder.header_desc = (TextView) convertView.findViewById(R.id.text2);
        holder.header_nom = (TextView) convertView.findViewById(android.R.id.text1);
        holder.header_img = (ImageView) convertView.findViewById(R.id.dibuheader);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    if (columnas.size() > column) {
        if (columnas.get(column).getENTR() == 3) {
       //do something
        }
    } else {
        //do something
    }
    return convertView;
}

【问题讨论】:

  • 请发布完整的堆栈跟踪。
  • 看起来一切都很好。 getENTR() 方法中可能发生异常。你能发布更详细的堆栈跟踪吗?
  • 你用的是什么适配器?
  • 这是一个多线程应用程序吗?如果 ArrayList 在另一个线程中通过删除一个项目被修改,恰好在检查之后和访问之前,那么你会得到这个异常。
  • 请发布您的getENTR() 方法

标签: java android arrays


【解决方案1】:

这是因为您的数组(列)已被非法地址访问。尝试使用 arrayList 而不是 array 。并查看这些问题以获得进一步的帮助。

What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? java.lang.ArrayIndexOutOfBoundsException: length=4; index=4 length array Login Web Service Exception(716): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0

希望对您有所帮助... :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2015-11-13
    • 1970-01-01
    • 2014-10-16
    • 2011-07-15
    相关资源
    最近更新 更多