3

IndexOutOfBoundsException がありますが、Android でアクティビティを終了する必要がある finish() で呼び出しを保護しています! else ステートメントを使用する必要がありますか?

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

1 に答える 1

3

次の変更を行います。

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

  return;
} 
mQidList.get(mIndex);

条件が true になると、サイズ制限に達したことを意味するため、それを超えるインデックスからデータにアクセスまたは取得しようとすると、IndexOutOfBoundsException.

あなたの場合、終了が呼び出されると、アクティビティは破棄されますが、スタックからのすべてのメソッド呼び出しエントリが呼び出されたメソッドから戻ることによって削除されるまで、コードはトップダウンパターンで実行されます。そのため、終了後にmQidList.get(mIndex);実行され、この例外が発生します.

于 2013-08-11T06:26:26.563 に答える