似乎我无法修复此错误消息。 我正确关闭光标..我甚至尝试创建一个具有不同引用名称的新光标..但这也没有用。我做错了什么?
12-17 10:09:14.107:E / Cursor(277):完成尚未停用或关闭的光标。 database = /data/data/com.lernapp.src/databases/LernApp,table = Answers,query = SELECT Answer,Correct FROM Answers WHERE TestId =? AND TestPageId =?
private void getRowData(LernAppOpenHelper myDbHelper) {
String[] columnsTestPage = {"TestPageId", "Question","Picture"};
Cursor cursor = myDbHelper.getQuery("TestPage", columnsTestPage, "TestId = ?", new String[]{testNummer}, null, null, null);
startManagingCursor(cursor);
cursor.moveToFirst();
while(!cursor.isAfterLast()){
int testPageId = cursor.getInt(cursor.getColumnIndex("TestPageId"));
String question = cursor.getString(cursor.getColumnIndex("Question"));
String picture = cursor.getString(cursor.getColumnIndex("Picture"));
this.testPages.add(new TestPage(testPageId, question, picture));
cursor.moveToNext();
}
cursor.close();
columnsTestPage = null;
String[] columnsAnswers = {"Answer", "Correct"};
for(TestPage p: testPages){
cursor = myDbHelper.getQuery("Answers", columnsAnswers, "TestId = ? AND TestPageId = ?", new String[]{testNummer, p.getTestPageId()}, null, null, null);
cursor.moveToFirst();
while(!cursor.isAfterLast()){
String answer = cursor.getString(cursor.getColumnIndex("Answer"));
int correct = cursor.getInt(cursor.getColumnIndex("Correct"));
p.setAnswer(answer, correct);
cursor.moveToNext();
}
}
cursor.close();
}
答案 0 :(得分:3)
如果您使用startManagingCursor(cursor);
,则无需关闭光标,Android会为您执行此操作。
删除startManagingCursor(cursor);
或删除cursor.close();
引用。
修改强> 试试这个:
private void getRowData(LernAppOpenHelper myDbHelper) {
String[] columnsTestPage = {"TestPageId", "Question","Picture"};
Cursor cursor = myDbHelper.getQuery("TestPage", columnsTestPage, "TestId = ?", new String[]{testNummer}, null, null, null);
cursor.moveToFirst();
while(!cursor.isAfterLast()){
int testPageId = cursor.getInt(cursor.getColumnIndex("TestPageId"));
String question = cursor.getString(cursor.getColumnIndex("Question"));
String picture = cursor.getString(cursor.getColumnIndex("Picture"));
this.testPages.add(new TestPage(testPageId, question, picture));
cursor.moveToNext();
}
cursor.close();
columnsTestPage = null;
String[] columnsAnswers = {"Answer", "Correct"};
for(TestPage p: testPages){
cursor = myDbHelper.getQuery("Answers", columnsAnswers, "TestId = ? AND TestPageId = ?", new String[]{testNummer, p.getTestPageId()}, null, null, null);
cursor.moveToFirst();
while(!cursor.isAfterLast()){
String answer = cursor.getString(cursor.getColumnIndex("Answer"));
int correct = cursor.getInt(cursor.getColumnIndex("Correct"));
p.setAnswer(answer, correct);
cursor.moveToNext();
}
cursor.close(); // Close the cursor here before the next loop
}
}