M
maniac205
Ambitioniertes Mitglied
- 10
Hallo,
habe folgendes Problem:
Meine Activity ruft Daten aus einer Datenbank ab und zeigt diese an (ListActivity) das funktioniert auch so weit.
Durch "startActivityForResult" wird die Anwendung kurzzeitig verlassen um Daten aus einer anderen App zu erhalten.
Anschließend werden die resultDaten in die DB geschrieben. (Geht auch)
Nun soll die DB erneut ausgelesen werden und die Daten erneut angezeigt werden. Hier kommt es aber zu einer Exception.
Exception: java.lang.IllegalStateException: trying to requery an already closed cursor android.database.sqlite.SQLiteCursor@40f9e2e0
Code:
Der Fehler hängt wohl damit zusammen, dass ich den Cursor beim verlassen in der OnPause()-Methode schließe und ihn anschließend wieder verwenden will.
habe folgendes Problem:
Meine Activity ruft Daten aus einer Datenbank ab und zeigt diese an (ListActivity) das funktioniert auch so weit.
Durch "startActivityForResult" wird die Anwendung kurzzeitig verlassen um Daten aus einer anderen App zu erhalten.
Anschließend werden die resultDaten in die DB geschrieben. (Geht auch)
Nun soll die DB erneut ausgelesen werden und die Daten erneut angezeigt werden. Hier kommt es aber zu einer Exception.
Exception: java.lang.IllegalStateException: trying to requery an already closed cursor android.database.sqlite.SQLiteCursor@40f9e2e0
Code:
Code:
ManagerDB dbManager;
private Cursor dataCursor;
private SQLiteDatabase isDatenbank;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.data_safe_main);
// Initialisiere DB-Manager
dbManager = new ManagerDB(this);
}
Code:
@Override
protected void onResume() {
super.onResume();
// Datenbank öffnen
Log.i(tag, "DB Open");
isDatenbank = dbManager.getReadableDatabase();
Log.d(tag, "lade Cursor");
dataCursor = isDatenbank.query(TABELLE_DATA, new String[] {
"_id", "dateiname", "DatPath" }, null,
null, null, null, null);
SimpleCursorAdapter dataCursorAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_expandable_list_item_2, dataCursor,
new String[] { "dateiname", "DatPath" }, new int[] {
android.R.id.text1, android.R.id.text2 });
setListAdapter(dataCursorAdapter);
}
Code:
//onClick startet nun die Activity for Result -> die OnPause methode wird aufgerufen
protected void onPause() {
super.onPause();
isDatenbank.close();
if (dataCursor != null) {
dataCursor.close();
}
}
Code:
protected void onActivityResult(int rquestCode, int resultCode,
Intent intentData) {
isDatenbank = dbManager.getWritableDatabase();
//Lese result und schreibe in DB
Log.d(tag, "Schreibe in DB");
ContentValues values = new ContentValues();
values.put(SPALTE_DATA_DAT_PATH, fileOut.getAbsolutePath());
values.put(SPALTE_DATA_DATEINAME,
fileHelper.getFileName(fileOut.getAbsolutePath()));
isDatenbank.insert(TABELLE_DATA, null, values);
isDatenbank = dbManager.getReadableDatabase();
//Lade erneut
Log.d(tag, "lade Cursor");
dataCursor = isDatenbank.query(TABELLE_DATA, new String[] {
"_id", "dateiname", "DatPath" }, null,
null, null, null, null);
SimpleCursorAdapter dataCursorAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_expandable_list_item_2, dataCursor,
new String[] { "dateiname", "DatPath" }, new int[] {
android.R.id.text1, android.R.id.text2 });
setListAdapter(dataCursorAdapter);
}
Der Fehler hängt wohl damit zusammen, dass ich den Cursor beim verlassen in der OnPause()-Methode schließe und ihn anschließend wieder verwenden will.
Zuletzt bearbeitet: