错误:尝试重新查询已关闭的游标

4 android cursor android-sqlite

我遇到了错误,但似乎无法找到解决方案.我的应用程序正在使用ICS 4.0.3,但它在Android 3.2上返回错误.这是我MainActivity.java文件中的代码:

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) {}
Run Code Online (Sandbox Code Playgroud)

有关如何解决这个问题的任何建议?

Com*_*are 11

在某个地方,你正在关闭Cursor你要去的地方startManagingCursor().stopManagingCursor()关闭之前打电话Cursor.

请注意,startManagingCursor()不推荐使用.当您的数据发生变化时,请在后台运行另一个查询(例如AsyncTask,CursorLoader),而不是使用它.

此外,您可以考虑使用a CursorAdapter,SimpleCursorAdapter而不是手动将所有数据转换为对象并使用ArrayAdapter.

此外,如果您打算使用ArrayAdapter,请用更具体的类声明它(例如ArrayAdapter<String>,不是ArrayAdapter<Object>.