【问题标题】:Android (JAVA) - CursorIndexOutOfBoundsExceptionAndroid (JAVA) - CursorIndexOutOfBoundsException
【发布时间】:2014-06-03 11:16:06
【问题描述】:

有时当我调用 cursorToCacheItem 应用程序崩溃并出现错误:

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..

我的 cursorToCacheItem 函数:

private CacheItem cursorToCacheItem(Cursor cursor) {
    if (cursor == null || cursor.getColumnCount() == 0)
        return null;

    // ...
}

我做错了什么?在那里检查后,为什么它不起作用?

【问题讨论】:

    标签: java android exception


    【解决方案1】:

    放:

    if (cursor == null || cursor.getCount() == 0)
    

    而不是

    if (cursor == null || cursor.getColumnCount() == 0).
    

    您检查的是列数而不是行数。

    【讨论】:

      【解决方案2】:

      改变这个

         if (cursor == null || cursor.getColumnCount() == 0)
      

      if (!(cursor.moveToFirst()) || cursor.getCount() ==0){
      

      【讨论】:

        【解决方案3】:

        在查询游标之前写cursor.moveToFirst()。它默认在最后一个位置。

        然后你可以循环它的内容,使用While(cursor.isAfterLast),在循环体中使用cursor.moveToNext()

        【讨论】:

          猜你喜欢
          • 2015-08-22
          • 2018-02-17
          • 1970-01-01
          • 2023-03-03
          • 1970-01-01
          • 2012-09-24
          • 1970-01-01
          • 2013-01-10
          • 1970-01-01
          相关资源
          最近更新 更多