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

为什么会这样?不能模拟。从来没有发生在我身上,我只是不明白原因和错误信息。

最佳答案

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

if (eventCursor != null) {

    //Start from beginning
    eventCursor.moveToFirst();

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

        // Do Somehing here
    }
 }

也可以使用eventCursor.getCount()检查光标是否有行。

关于java - 无法从CursorWindow中读取第384行第47列。确保游标已正确初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16563934/

10-11 13:22