3

我有一个 IndexOutOfBoundsException,但我正在使用 finish() 保护调用,它应该退出 Android 中的 Activity!我应该使用 else 语句吗?

if (mIndex >= mQidList.size()) { 
  closeDB();
  finish();
}
mQidList.get(mIndex);
4

1 回答 1

3

进行以下更改:

if (mIndex >= mQidList.size()) { 
  closeDB();
  finish();

  return;
} 
mQidList.get(mIndex);

当条件为真时,这意味着已达到大小限制,因此访问/尝试从超出该限制的任何索引中获取数据将导致IndexOutOfBoundsException.

在您的情况下,当调用完成时,活动被破坏,但代码以自上而下的模式执行,直到通过从被调用的方法返回来删除堆栈中的所有方法调用条目,这就是为什么在完成后mQidList.get(mIndex);执行导致此异常.

于 2013-08-11T06:26:26.563 回答