我想问一下为什么它不起作用,所以下次我可以更好地帮助自己。如何修复Android Studio中的IllegalStateException
错误。从数据库中检索数据时出现此错误。我收到的错误是如下所述的非法状态异常。
致命异常:java.lang.IllegalStateException 无法从CursorWindow读取行6023,列0。在从游标访问数据之前,请确保正确初始化了游标。 com.navdemo.ui.forms.FormDetailViewModel $ 10.run
代码,出现此错误的原因是:
private void initScansForForm() {
if (form == null) {
return;
}
final String formId = form.getFormId();
new Thread() {
public void run() {
List<Scan> scans = new ArrayList<>();
Cursor c = db.fetchFormScans(formId);
int id = 0;
while (c.moveToNext()) {
if (!c.isNull(0)){
id = c.getInt(0);
}
else {
Log.d(TAG, "run: "+id);
}
int formId = c.getInt(1);
String scanTime = c.getString(2);
String locationName = c.getString(3);
double latitude = c.getDouble(4);
double longitude = c.getDouble(5);
scans.add(new Scan(id, formId, scanTime, locationName, latitude, longitude));
}
setScans(scans);
}
}.start();
}
public Cursor fetchFormScans(@NonNull String formId) {
return fetchFormScans(Integer.parseInt(formId));
}
public Cursor fetchFormScans(@NonNull String formId) `enter code here`{
return fetchFormScans(Integer.parseInt(formId));
}
答案 0 :(得分:0)
在进行!cursor.isAfterLast()
之前尝试检查moveToNext
答案 1 :(得分:0)
请确保您输入的号码是 字符串formId = form.getFormId(); 由于您的fetchFormScans()方法将字符串formId解析为整数,因此如果formId中包含字母,可能会出现问题。