2012-06-23 1 views
4

커서 마감했다. 내 응용 프로그램이 ICS 4.0.3에서 작동하지만 Android 3.2에서 오류를 반환합니다. 이 문제를 해결하는 방법에 대한오류 : 이미를 다시 쿼리하려고 내가 오류로 실행 해요 그러나 나는 해결책을 찾을 수 없습니다

SQLiteDatabase db = databaseHelper.getReadableDatabase(); 
     Cursor cursor = db.query(DatabaseHelper.TABLE_NAME, new String[]{"_id","isim","icerik"}, null, null, null, null, null); 
     startManagingCursor(cursor); 
     tts=0; 



     while(cursor.moveToNext()){ 
      if(tts==0) 
      {    
      array_spinner=new String[cursor.getCount()+1]; 
      array_spinner[tts]= "FAVORİ"; 
      } 
      array_spinner2[tts+1]= cursor.getString((cursor.getColumnIndex("isim"))); 
      array_spinner3[tts+1]= cursor.getString((cursor.getColumnIndex("icerik"))); 
      tts++; 
      } 

     ss2 = (Spinner) findViewById(R.id.spinner2); 
     ArrayAdapter<Object> adapter = new ArrayAdapter<Object>(this,R.layout.row2, R.id.weekofday2, array_spinner2); 
      ss2.setAdapter(adapter); 
     } catch (Exception e) {} 

어떤 제안 : 여기 내 MainActivity.java 파일의 코드는?

답변

10

어딘가에, 당신은 당신이 startManagingCursor()에 전달하는 Cursor을 닫는. 을 닫기 전에 stopManagingCursor()으로 전화하십시오. startManagingCursor()가되지 않습니다 것을

참고. 이를 사용하는 대신 데이터가 변경되면 백그라운드에서 다른 검색어를 실행하십시오 (예 : AsyncTask, CursorLoader).

또한, 수동 객체로 모든 데이터를 변환하고 ArrayAdapter를 사용하는 대신, SimpleCursorAdapter처럼 CursorAdapter를 사용하는 것이 좋습니다. . 당신이 ArrayAdapter를 사용하려는 경우

또한,보다 구체적인 클래스를 선언하십시오 (예를 들어, ArrayAdapter<String>은하지 ArrayAdapter<Object>

+0

은 지금 ** ** CursorAdapter를 사용하고 때이 오류가 존재 –

+0

답변을 주셔서 감사하려고합니다. 나를 위해 그 다른 시나리오. 앱을 실행하고 ** 홈 ** 버튼을 누른 다음이 예외가 던져 질 최근 앱을 사용하여 내 앱을 다시 실행합니다. 나는이 사용 * CursorLoader * – Dinesh

+0

을 할 수있는 더 좋은 방법이 (가)'Cursor' 나를 위해 오류를 수정 닫기 전에'stopManagingCursor'를 호출 생각! 감사합니다 @ CommonSWare –

1

는 당신을 위해 작동 수도를 넣어 :

@Override 
    protected void onRestart() { 
     // TODO Auto-generated method stub 
     super.onRestart(); 

     cursor.requery(); 
    } 
1

이를 오류가

startManagingCursor() 

제대로라는 것을 100 % 확신 할 수 없다되지 않는 방법의 부정확 한 사용으로 인한 것으로 보인다 매우 가끔 있기 때문에이 문제를 해결할 것입니다.

나는 그것을 사용하지 않도록하고 CursorLoader 및 LoaderManager 고수하는 것이 좋습니다.

관련 문제