Mike W.
- Forum-Beiträge: 87
24.01.2011, 21:18:54 via Website
24.01.2011 21:18:54 via Website
Moin
Habe wieder einen Fehler in meiner App, auch wenn ich diesmal nicht weiss woher der kommt.
Ich habe ein Hauptmenü mit Buttons zu den Unterpunkten. Der erste Button führt zu einem TabLayout, in dem es die Tabs von Montag bis Freitag gibt.
Bei jedem Tab erstelle ich beim onCreate eine Tabelle mit dem Tag als Namen. Wenn in keiner der Tabellen etwas drin steht, wird im Hauptmenü ein Dialog erzeugt, der den User bittet dort etwas einzutragen.
Bisher hat das auch wunderbar funktioniert, aber seit heute gibt es einen Error wenn ich beim Dialog auf OK drücke (dann öffnet sich das TabLayout -> Tabelle für den aktuellen Tab wird erstellt), die App verlasse ohne etwas zu machen (Also keine Daten eingefügt in die Tabelle), sie wieder öffne und das TabLayout neu öffne.
Bis zum Beenden der App läuft es normal, keine Exceptions oder so.
Aber sobald man das zweite Mal (nach dem Beenden) auf OK drückt, kommen 2 Exceptions:
Failure 21 tritt laut Google dann auf, wenn das SQL-Statement falsch ist, aber bisher hat es damit immer funktioniert (und funktioniert auch bei anderen Tabellen, die im Hauptmenü erstellt werden)
Der zweite Fehler:
Das tritt bei diesem Statement auf:
myDB ist dabei das gleiche DB-Objekt, das ich im Mainmenu erstellt habe.
Gemäss Exception müsste myDB geschlossen sein, deshalb habe ich ausgegeben wenn die DB geöffnet (Direkt nach dem onCreate des Hauptmenüs) und wenn sie geschlossen (im onDestroy) wird.
Allerdings wird sie geöffnet, geschlossen, geöffnet und dann kommt die Fehlermeldung.
Ich hoffe ich konnte mein Problem einigermassen deutlich formulieren und jemand kann mir dabei helfen.
Schon mal danke und Gruss, Mike
Habe wieder einen Fehler in meiner App, auch wenn ich diesmal nicht weiss woher der kommt.
Ich habe ein Hauptmenü mit Buttons zu den Unterpunkten. Der erste Button führt zu einem TabLayout, in dem es die Tabs von Montag bis Freitag gibt.
Bei jedem Tab erstelle ich beim onCreate eine Tabelle mit dem Tag als Namen. Wenn in keiner der Tabellen etwas drin steht, wird im Hauptmenü ein Dialog erzeugt, der den User bittet dort etwas einzutragen.
Bisher hat das auch wunderbar funktioniert, aber seit heute gibt es einen Error wenn ich beim Dialog auf OK drücke (dann öffnet sich das TabLayout -> Tabelle für den aktuellen Tab wird erstellt), die App verlasse ohne etwas zu machen (Also keine Daten eingefügt in die Tabelle), sie wieder öffne und das TabLayout neu öffne.
Bis zum Beenden der App läuft es normal, keine Exceptions oder so.
Aber sobald man das zweite Mal (nach dem Beenden) auf OK drückt, kommen 2 Exceptions:
Failure 21 (out of memory) on 0x0 when preparing 'CREATE TABLE IF NOT EXISTS 'Montag' (_id INTEGER PRIMARY KEY AUTOINCREMENT, fach VARCHAR, lehrer VARCHAR, ....);'.
Der zweite Fehler:
Caused by: java.lang.IllegalStateException: attempt to acquire a reference on a close SQLiteClosable
Das tritt bei diesem Statement auf:
cur2 = myDB.rawQuery("SELECT _id,fach,lehrer,raum,von,bis FROM '" + TABLE_NAME + "';", null);
myDB ist dabei das gleiche DB-Objekt, das ich im Mainmenu erstellt habe.
Gemäss Exception müsste myDB geschlossen sein, deshalb habe ich ausgegeben wenn die DB geöffnet (Direkt nach dem onCreate des Hauptmenüs) und wenn sie geschlossen (im onDestroy) wird.
Allerdings wird sie geöffnet, geschlossen, geöffnet und dann kommt die Fehlermeldung.
Ich hoffe ich konnte mein Problem einigermassen deutlich formulieren und jemand kann mir dabei helfen.
Schon mal danke und Gruss, Mike
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.