2011-12-17 2 views
2

이 오류 메시지는 수정할 수없는 것으로 보입니다. 나는 정확하게 커서를 닫습니다 .. 나는 다른 참조 이름으로 새 커서를 만들려고했는데 ..이 didnt도 작동 .. 내가 뭘 잘못 했니?android가 비활성화되거나 닫히지 않은 커서를 마무리하는

12-17 10 : 09 : 14.107 : E/커서 (277) : 비활성화 또는 닫히지 않은 커서 마무리. database = /data/data/com.lernapp.src/databases/LernApp, table = Answers, query = SELECT 대답, 올바른 답 답변 위치 TestId =? 및 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(); 
    } 

답변

3

당신이 startManagingCursor(cursor); 커서를 닫을 필요가 없습니다 사용하는 경우, 안드로이드는 당신을 위해 그것을 할 것입니다. 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 
     } 
    } 
+0

이 아무것도 변경 나던 ... 난 그냥 startManagingCursor 또는 cursor.close(), 같은 오류 MSG가 나타납니다 .. – krackmoe

+1

를 사용하는 경우 새 코드를 사용해보십시오 –

관련 문제