无法从CursorWindow读取第384行,第47行。确保正确初始化Cursor

时间:2013-05-15 11:33:32

标签: java android sqlite cursor android-cursoradapter

我正在阅读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...
        }

为什么会这样?它无法模拟。它永远不会发生在我身上,我只是无法理解原因或错误信息。

1 个答案:

答案 0 :(得分:0)

在迭代开始时,使用eventCursor.moveToFirst()移动到第一行。你可以使用这样的东西:

if (eventCursor != null) {

    //Start from beginning
    eventCursor.moveToFirst();

    // Loop over rows
    while (eventCursor.moveToNext()) {

        // Do Somehing here
    }
 }

您还可以使用eventCursor.getCount()检查Cursor是否有行。