Android SQLite: Versuch, ein bereits geschlossenes Objekt erneut zu öffnen

8

Ich versuche, bestimmte Buchdaten aus meiner Inventartabelle basierend auf der ISBN zu erhalten. Ich erhalte jedoch einen Fehler: "Versuch, ein bereits geschlossenes Objekt erneut zu öffnen". Der Fehler tritt nur auf, wenn ich auf ein listView-Objekt klicke, zu einem anderen Bildschirm gehe, mit "end ()" zu dieser Seite zurückkehre und dann versuche, auf ein anderes listView-Objekt zu klicken. Ich habe String searchEntries[] = InventoryAdapter.getInventoryEntriesByISBN(searchQuery, isbn[position]); von onClickListener auf die vorherige for-Schleife vor onClickListener verschoben und jetzt funktioniert es.

Warum funktioniert es nicht, wenn ich versuche, InventoryEntriesByISBN zu erhalten, nachdem ich von "activate ()" zu einer anderen Aktivität zurückgekehrt bin?

Der Fehler tritt bei SearchResultsScreen auf:

%Vor%

und bei Erweiterung tritt bei InventoryAdapter auf:

%Vor%

SearchResultsScreen.java

%Vor%

InventoryAdapter.java (Wichtigste Teile)

%Vor%

DataBaseHelper.java

%Vor%     
erad 11.01.2014, 03:44
quelle

4 Antworten

2

Der Fehler tritt nur auf, wenn ich auf ein Element klicke, zu einem anderen Bildschirm gehe, mit "end ()" zu dieser Seite zurückkehre und dann versuche, auf ein anderes listView-Objekt zu klicken.

Ich habe die Zeichenfolge searchEntries [] = InventoryAdapter.getInventoryEntriesByISBN (searchQuery, isbn [position]) verschoben; vom onClickListener zur vorherigen for-Schleife vor dem onClickListener und jetzt funktioniert es.

Der korrekte SearchResultsScreen ist unten:

SearchResultsScreen.java

%Vor%     
erad 11.01.2014, 04:28
quelle
11

Überprüfen Sie die Datenbankverbindung, bevor Sie die Abfrage ausführen:

if (!dbHelper.db.isOpen()) dbHelper.open();

Sie können cursor.requery(); auch für die gleiche Abfrage verwenden.

und zuletzt müssen Sie auch den Cursor und die Datenbank schließen.

%Vor%

Bearbeitet:

Ich habe DBHelper class erstellt, die SQLiteOpenHelper erweitert, diese Klasse ist innere Klasse von DatabaseHelper class und diese Klasse hat folgende Methoden.

%Vor%

Wenn Sie noch Zweifel haben, dann fühlen Sie sich frei, mich anzumelden. Danke.

    
Pratik Butani 11.01.2014 04:51
quelle
1

Das ist dein Problem

%Vor%

Wechseln Sie zu

%Vor%     
Raghunandan 11.01.2014 04:05
quelle
0
%Vor%

Fügen Sie SQLiteDatabase db = this.getWritableDatabase(); in diesem Code hinzu, bevor Sie die rohe Abfrage

ausführen     
PsyGik 11.01.2014 04:00
quelle