非常に奇妙な例外が発生しました。ここではうまく動作しますが、私の顧客はこの例外に遭遇し続けてクラッシュします。それを理解するのに何時間もかかりましたが、残念ながら今のところまだ運がありません。助けていただければ幸いです。
これはコードです:
protected void onPostExecute(List<File> result) {
try {
mBooks.clear();
if (result != null) {
ArrayList<BookInfo> newBooks = new ArrayList<BookInfo>();
for (File f : result) {
BookInfo bi = new BookInfo(BookCollections.this, f);
if (!contains(bi)) {
newBooks.add(bi);
}
}
mDB.insertBooks(newBooks);
mBooks.addAll(newBooks);
new AlertDialog.Builder(BookCollections.this)
.setTitle(newBooks.size() + " Books found!")
.setPositiveButton(android.R.string.ok, null)
.setView(
new BookInfoList(BookCollections.this,
newBooks)).show();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
mScanDlg.dismiss();
notifyDataSetChanged();
}
}
private boolean contains(BookInfo bi) {
if (bi == null) {
return true;
}
for (BookInfo book : mBooks) {
if (book.equalTo(bi)) {
return true;
}
}
for (FolderInfo fi : mFolders) {
if (fi.getBooks() != null) {
for (BookInfo book : fi.getBooks()) {
if (book.equalTo(bi)) {
return true;
}
}
}
}
return false;
}
私を助けてください。ありがとう
この例外(java.lang.ArrayIndexOutOfBoundsException)は、
for (File f : result) {
BookInfo bi = new BookInfo(BookCollections.this, f);
if (!contains(bi)) {
newBooks.add(bi);
}
}