Mein erstes Mal eine Frage hier stellen, also sei sanft, Lol.getDatabase rekursiv aufgerufen
Wie auch immer. Ich habe an einem Android gearbeitet und mein neuestes Build lief fehlerfrei. Bis gestern, als IT mir eine neue Workstation gab. Da diese neue Workstation bekommen, ich bekomme immer folgende Fehlermeldung:
04-11 17:34:53.282: E/AndroidRuntime(789): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.blueharvest/com.example.blueharvest.SettingsActivity}: java.lang.IllegalStateException: getDatabase called recursively
Wenn es hilft, ich dies in einem virtuellen Gerät leite, mit Plattform 4.2.2 und API-Ebene 17.
I Ich hoffe wirklich, dass jemand etwas Licht auf diesen Fehler werfen kann, damit ich aufhören kann, mir die Haare auszureißen, Lol.
Wenn weitere Informationen benötigt werden, lassen Sie es mich bitte wissen.
Vielen Dank,
Brad.
EDIT: mehr der logcat Hinzugefügt
04-11 19:25:08.668: E/AndroidRuntime(2748): FATAL EXCEPTION: main
04-11 19:25:08.668: E/AndroidRuntime(2748): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.blueharvest/com.example.blueharvest.SettingsActivity}: java.lang.IllegalStateException: getDatabase called recursively
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.os.Looper.loop(Looper.java:137)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-11 19:25:08.668: E/AndroidRuntime(2748): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 19:25:08.668: E/AndroidRuntime(2748): at java.lang.reflect.Method.invoke(Method.java:511)
04-11 19:25:08.668: E/AndroidRuntime(2748): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-11 19:25:08.668: E/AndroidRuntime(2748): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-11 19:25:08.668: E/AndroidRuntime(2748): at dalvik.system.NativeStart.main(Native Method)
04-11 19:25:08.668: E/AndroidRuntime(2748): Caused by: java.lang.IllegalStateException: getDatabase called recursively
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:204)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
04-11 19:25:08.668: E/AndroidRuntime(2748): at com.example.blueharvest.DatabaseHandler.setDefaultLabel(DatabaseHandler.java:90)
04-11 19:25:08.668: E/AndroidRuntime(2748): at com.example.blueharvest.DatabaseHandler.onCreate(DatabaseHandler.java:82)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
04-11 19:25:08.668: E/AndroidRuntime(2748): at com.example.blueharvest.DatabaseHandler.populateFields(DatabaseHandler.java:196)
04-11 19:25:08.668: E/AndroidRuntime(2748): at com.example.blueharvest.SettingsActivity.onCreate(SettingsActivity.java:45)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.Activity.performCreate(Activity.java:5104)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-11 19:25:08.668: E/AndroidRuntime(2748): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-11 19:25:08.668: E/AndroidRuntime(2748): ... 11 more
EDIT: Code hinzugefügt, der den Fehler verursacht. setDefaultLabel() ist der Schuldige.
@Override
public void onCreate(SQLiteDatabase db) {
// Create tables
db.execSQL(CREATE_CATEGORIES_TABLE);
db.execSQL(CREATE_CHRGDATA_TABLE);
db.execSQL(CREATE_SETTINGS_TABLE);
setDefaultLabel();
}
/**
*
*/
public void setDefaultLabel() {
// create default label
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, "Default");
db.insert(TABLE_LABELS, null, values);
}
Einen Fehler zu melden, ohne den Code anzuzeigen, der es verursacht, wird niemandem helfen, Ihnen zu helfen. Veröffentlichen Sie außerdem mehr von dem Logcat, da es eine "Caused by ..." Zeile geben sollte. – Squonk
Nun, der Code hatte sich überhaupt nicht geändert, deshalb hielt ich das in diesem speziellen Fall für nicht relevant. Das Projekt selbst ist auch ziemlich groß und nicht wirklich sicher, woher dieser Fehler kommt. Das vollständige Logcat wurde dem ursprünglichen Post hinzugefügt. Die Zeile "By caused by" gibt dasselbe wie getDatabase rekursiv an. Das einzige, was sich geändert hat, ist der Arbeitsplatz. Sehr verwirrt. Wie auch immer, danke für die schnelle Antwort. –
Ok ... Also anscheinend habe ich geschlafen. Nachdem ich den Logcat nochmal durchgelesen habe, habe ich etwas bemerkt, das ich vorher nicht hatte ... Ich gebe zu, dass ich mich jetzt ziemlich albern fühle, weil ich das gepostet habe. Der Code, der diesen Fehler verursacht, wurde dem ursprünglichen Post hinzugefügt. Immer noch unsicher, warum es dieses Problem verursachen würde, so würde jede zusätzliche Hilfe groß sein. Danke noch einmal. B. –