我正在阅读Android日历中的一些数据,有时我会收到来自用户的奇怪崩溃报告:
java.lang.IllegalStateException: Couldn't read row 384, col 47 from CursorWindow.
Make sure the Cursor is initialized correctly before accessing data from it.
我的代码在这里(粗体是应用程序崩溃的行):
Cursor eventCursor = contentResolver.query
(builder.build(),
null,
CalendarContract.Instances.CALENDAR_ID + " IN (" + ids + ")",
null,
null);
if (eventCursor == null)
return true;
while (eventCursor.moveToNext()) { //this line causecrash
... do something...
}
为什么会这样?它无法模拟。它永远不会发生在我身上,我只是无法理解原因或错误信息。
答案 0 :(得分:0)
在迭代开始时,使用eventCursor.moveToFirst()
移动到第一行。你可以使用这样的东西:
if (eventCursor != null) {
//Start from beginning
eventCursor.moveToFirst();
// Loop over rows
while (eventCursor.moveToNext()) {
// Do Somehing here
}
}
您还可以使用eventCursor.getCount()
检查Cursor是否有行。