Android Studio - 值必须≥ 0

标签 android android-cursor

我在 Android Studio 中遇到与光标有关的错误。
我的代码中有以下行

String data = cursor.getString(cursor.getColumnIndex(columnIndex));
columnIndex 被传递到方法中。
这部分 cursor.getColumnIndex(columnIndex) 产生以下错误
值必须≥ 0
它发生在我的 DBHelper 类和我的回收器适配器中,当它也使用游标时。
它以红色显示为错误,但应用程序仍然可以毫无问题地构建和运行。
有任何想法吗?
谢谢你的帮助。
21 年 9 月 22 日更新
我正在根据要求添加一些代码,以及我是如何解决这个错误的。不确定它是否是最好的方法。
所以我使用的方法是这样的......
public String getTripInfo(String tableName, int tripNo, String columnIndex){
    String data = "";

    // Select all query
    String selectQuery = "SELECT * FROM " + tableName + " WHERE " + TRIP_DETAILS_TRIP_NUMBER + "=" + tripNo;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // Looping through all rows and adding to list
    if(cursor.moveToFirst()){
        do{
            data = cursor.getString(cursor.getColumnIndex(columnIndex));
        } while(cursor.moveToNext());
    }

    // Closing connections
    cursor.close();
    db.close();

    //Returning number plates
    return data;
}
错误在 do while 循环中。红色部分为“cursor.getColumnIndex(columnIndex))”
我解决此错误的方法是使用以下代码
public String getTripInfo(String tableName, int tripNo, String columnIndex){
    String data = "";

    // Select all query
    String selectQuery = "SELECT * FROM " + tableName + " WHERE " + TRIP_DETAILS_TRIP_NUMBER + "=" + tripNo;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // Looping through all rows and adding to list
    if(cursor.moveToFirst()){
        do{
            int index = cursor.getColumnIndex(columnIndex);
            data = cursor.getString(index);
        } while(cursor.moveToNext());
    }

    // Closing connections
    cursor.close();
    db.close();

    //Returning number plates
    return data;
}

最佳答案

我有这样的错误。
我的解决方案:更改方法getColumnIndex进入 getColumnIndexOrThrow .

关于Android Studio - 值必须≥ 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69053061/

相关文章:

Android 仅对列出了电子邮件的联系人获取光标 >android 2.0

java - 通过内容提供者传递二进制 blob

android - 如何使用 Cursor Loader 访问检索到的数据?

android - 如何使编辑文本前缀不可编辑

android - 从 View 长按触发 DOWN 事件时从对话框注册 UP/CANCEL

android - 获取与 Android 查询的完整对话

java - 如何在安卓平板电脑的屏幕上显示鼠标光标?

android - 有没有办法在我的 Android 应用程序中暂停(或静音)默认音乐播放器?

android - 微调器中的文本更改高度和宽度选择微调器的另一个项目

android - 如何将 native react 发布为 apk 文件或 ios 文件?