You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android CursorIndexOutOfBoundsException索引-1异常问题求解

异常原因
  • Android 中Cursor查询完成返回时,初始位置默认在 -1(所有数据行之前的无效位置),此时直接调用getString()、getInt()等读取字段的方法,就会触发CursorIndexOutOfBoundsException,和你报错信息里的Index -1 requested完全匹配。
  • 你报错信息里的size of 1说明查询已经匹配到了1条符合条件的用户数据,只是没有将光标移动到有效数据行就读取内容才触发了异常。
修复方案

你需要先调用Cursor的位置移动方法,确认处于有效数据行后再读取字段,同时用完Cursor要主动关闭避免内存泄漏:

  1. 调用moveToFirst()方法尝试将光标移动到第一条数据,该方法返回true说明存在有效数据可以读取
  2. 数据读取完成后调用cursor.close()回收资源

修正后的业务代码如下:

TextView account = findViewById(R.id.txtUsernameAcc);
DBH db = new DBH(accountActivity.this);
Cursor cursor = db.displayUserInfo(loginActivity.accountName);
// 先移动光标到有效位置再读取数据
if (cursor.moveToFirst()) {
    account.setText(cursor.getString(0));
}
// 关闭Cursor释放资源
cursor.close();

如果后续需要遍历多条查询结果,替换为while(cursor.moveToNext())循环读取即可。


内容的提问来源于stack exchange,提问作者Wolo Lo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:36:02