Android(JAVA)-CursorIndexOutOfBoundsException
有时,当我调用cursorToCacheItem时,应用程序会因以下错误而崩溃:Android(JAVA)-CursorIndexOutOfBoundsException,java,android,exception,Java,Android,Exception,有时,当我调用cursorToCacheItem时,应用程序会因以下错误而崩溃: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 android.database.AbstractCursor.checkPosition(AbstractCursor.java:400) android.database.AbstractWindowedCursor.checkPositio
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
android.database.AbstractCursor.checkPosition(AbstractCursor.java:400)
android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
com.itirsolutions.cache.BaseCache.cursorToCacheItem(BaseCache.java:131)
com.itirsolutions.cache.BaseCache.get(BaseCache.java:101)
com.itirsolutions.cache.BaseCache.put(BaseCache.java:47)
com.itirsolutions.transactions.UsersInfoCache.put(UsersInfoCache.java:27)
etc..
My cursorToCacheItem函数:
private CacheItem cursorToCacheItem(Cursor cursor) {
if (cursor == null || cursor.getColumnCount() == 0)
return null;
// ...
}
我做错了什么?检查后,为什么不工作?放:
if (cursor == null || cursor.getCount() == 0)
而不是
if (cursor == null || cursor.getColumnCount() == 0).
您正在检查列数而不是行数。更改此选项
if (cursor == null || cursor.getColumnCount() == 0)
到
在查询光标之前先写入cursor.moveToFirst。默认情况下,它位于其最后位置
然后,可以使用Whilecursor.isAfterLast循环它的内容,并在循环体中使用cursor.moveToNext
if (!(cursor.moveToFirst()) || cursor.getCount() ==0){