Android Studio -取值必须≥0



我在Android Studio中得到一个错误与我的光标。

我的代码中有以下行

String data = cursor.getString(cursor.getColumnIndex(columnIndex));

columnIndex正在被传递给方法。

这部分cursor.getColumnIndex(columnIndex)产生以下错误

值必须≥0

当它也使用游标时,它发生在我的DBHelper类和我的回收器适配器中。

显示为红色错误,但应用程序仍然构建和运行没有问题。

任何想法?

谢谢你的帮助。

更新22-Sep-21

我根据要求添加一些代码,以及我如何绕过这个错误。但我不确定这是不是最好的办法。

我使用的方法是....

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

问题是cursor.getColumnIndex()可以返回-1,您将其作为直接参数传递,并且游标getter需要列索引gte 0。getter的参数用@IntRange(from = 0)注释,这就是为什么lint将其标记为错误。

所以即使可能已经构建了您的项目,使其永远不会产生无效的列索引,这种可能存在的事实是为什么lint标记它。

你的代码修订只是避免了这个问题。对于gte 0,最好使用cursor.getColumnIndexOrThrow()或测试index

你可以摆脱你的改变,因为你比lint更了解你的项目,这只是不是最佳实践。

正确使用此方法:-

@SuppressLint("Range"强名称= cursor.getString(cursor.getColumnIndex(indexNumber));

相关内容

  • 没有找到相关文章

最新更新