Fehler: Insert in SQLite Datenbank, Hilfe gesucht

Micka

Micka

Fortgeschrittenes Mitglied
1
Hy

Ich bin noch relativ frisch wenn es darum geht Android-Apps zu entwickeln. Programmiert hab ich jedoch schon einiges während meines bald endenden Studiums der Informatik. Nun wollte ich mir Android mal angucken um einschätzen zu können ob und in Welchem Umfang ich es in einer ProjektArbeit und evtl Bachelorarbeit verwenden möchte. Nun zu meinem Projekt.

Geplant ist ein ziemlich simples Haushaltsbuch. Das Menü das sich nach dem Start der App zeigt ist bisher nur teilweise mit Funktionen hinterlegt.
Die Funktion Eintrag Hinzufügen ist implementiert aber anscheinend fehlerbehaftet.

Die Funktion Einträge anzeigen ist auch soweit fertig implementiert.

Die Funktionen Eintrag ändern bzw Eintrag löschen sind noch nicht implementiert, sollen aber auch nicht mehr per Menübutton sondern per ContextMenu bei den angezeigten Einträgen realisiert werden.

Dazu später evtl mehr wenn das derzeitige Problem behoben ist.

Beim Eintragen in die Datenbank (Funktion onClickEintraghinzufuegen der Klasse EintragHinzufuegenActivity) fliegen mir leider aber Exceptions um die Ohren.

LogCat:
01-01 23:27:42.136: E/AndroidRuntime(432): Uncaught handler: thread main exiting due to uncaught exception
01-01 23:27:42.157: E/AndroidRuntime(432): java.lang.IllegalStateException: Could not execute method of the activity
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.View$1.onClick(View.java:2031)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.View.performClick(View.java:2364)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.View.onTouchEvent(View.java:4179)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.widget.TextView.onTouchEvent(TextView.java:6541)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.View.dispatchTouchEvent(View.java:3709)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-01 23:27:42.157: E/AndroidRuntime(432): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
01-01 23:27:42.157: E/AndroidRuntime(432): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
01-01 23:27:42.157: E/AndroidRuntime(432): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.os.Handler.dispatchMessage(Handler.java:99)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.os.Looper.loop(Looper.java:123)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.app.ActivityThread.main(ActivityThread.java:4363)
01-01 23:27:42.157: E/AndroidRuntime(432): at java.lang.reflect.Method.invokeNative(Native Method)
01-01 23:27:42.157: E/AndroidRuntime(432): at java.lang.reflect.Method.invoke(Method.java:521)
01-01 23:27:42.157: E/AndroidRuntime(432): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-01 23:27:42.157: E/AndroidRuntime(432): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-01 23:27:42.157: E/AndroidRuntime(432): at dalvik.system.NativeStart.main(Native Method)
01-01 23:27:42.157: E/AndroidRuntime(432): Caused by: java.lang.reflect.InvocationTargetException
01-01 23:27:42.157: E/AndroidRuntime(432): at micka.finanzen.EintragHinzufuegenActivity.onClickEintragSpeichern(EintragHinzufuegenActivity.java:58)
01-01 23:27:42.157: E/AndroidRuntime(432): at java.lang.reflect.Method.invokeNative(Native Method)
01-01 23:27:42.157: E/AndroidRuntime(432): at java.lang.reflect.Method.invoke(Method.java:521)
01-01 23:27:42.157: E/AndroidRuntime(432): at android.view.View$1.onClick(View.java:2026)
01-01 23:27:42.157: E/AndroidRuntime(432): ... 21 more
01-01 23:27:42.157: E/AndroidRuntime(432): Caused by: java.lang.ClassCastException: java.lang.String
01-01 23:27:42.157: E/AndroidRuntime(432): ... 25 more
01-01 23:27:42.176: I/dalvikvm(432): threadid=7: reacting to signal 3
01-01 23:27:42.176: E/dalvikvm(432): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
Leider kann ich mit meinem Kenntnisstand keine Fehler entdecken. Sieht jemand von euch den Fehler?

Fehlerbehafteter Code(Auskommentiert klappt alles):

Code:
public void onClickEintragSpeichern(final View sfNormal) 
    {
        Spinner day = (Spinner) findViewById(R.id.datum_Tag);
        Spinner month = (Spinner) findViewById(R.id.datum_Monat);
        Spinner year = (Spinner) findViewById(R.id.datum_Jahr);
        EditText wofuer = (EditText) findViewById(R.id.hinzufuegen_zweck);
        EditText betrag = (EditText) findViewById(R.id.hinzufuegen_betrag);
        final Eintrag eintrag = new Eintrag();
        eintrag.day = (Integer) day.getSelectedItem();
        eintrag.month = (Integer) month.getSelectedItem();
        eintrag.year = (Integer) year.getSelectedItem();
        eintrag.wofuer = wofuer.getText().toString();
        eintrag.betrag = Double.parseDouble(betrag.getText().toString());
        myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
        myDB.execSQL("INSERT INTO "+MY_DB_TABLE+" (day, month, year, wofuer, betrag) "
                +"VALUES (" + eintrag.day +","+eintrag.month+","
                + eintrag.year +","+"'"+eintrag.wofuer +"',"
                + eintrag.betrag+ ");");
        Log.v(tag, "Insert new Eintrag: " + eintrag.day + "." +eintrag.month +"." + eintrag.year +", " + eintrag.wofuer + ", " + eintrag.betrag);
        final Intent i = new Intent(this, Startseiteactivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        startActivity(i);
    }
 
Dank einem Kollegen ist der Fehler beim eintragen nun behoben.

Neuer Quelltext:
Code:
public void onClickEintragSpeichern(final View sfNormal) 
    {
        Spinner day = (Spinner) findViewById(R.id.datum_Tag);
        Spinner month = (Spinner) findViewById(R.id.datum_Monat);
        Spinner year = (Spinner) findViewById(R.id.datum_Jahr);
        EditText wofuer = (EditText) findViewById(R.id.hinzufuegen_zweck);
        EditText betrag = (EditText) findViewById(R.id.hinzufuegen_betrag);
        final Eintrag eintrag = new Eintrag();
       
       [B] eintrag.day = Integer.valueOf(day.getSelectedItem().toString()) ;
        eintrag.month = Integer.valueOf(month.getSelectedItem().toString()) ;
        eintrag.year = Integer.valueOf(year.getSelectedItem().toString()) ;
        eintrag.wofuer = wofuer.getText().toString();
        eintrag.betrag = Double.parseDouble(betrag.getText().toString());[/B]
        myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
        myDB.execSQL("INSERT INTO "+MY_DB_TABLE+" (day, month, year, wofuer, betrag) "
                +"VALUES (" + eintrag.day +","+eintrag.month+","
                + eintrag.year +","+"'"+eintrag.wofuer +"',"
                + eintrag.betrag+ ");");
        Log.v(tag, "Insert new Eintrag: " + eintrag.day + "." +eintrag.month +"." + eintrag.year +", " + eintrag.wofuer + ", " + eintrag.betrag);
        final Intent i = new Intent(this, Startseiteactivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        startActivity(i);
    }
 
Zuletzt bearbeitet:

Ähnliche Themen

R
Antworten
6
Aufrufe
1.010
swa00
swa00
D
Antworten
17
Aufrufe
404
datNeMo
D
S
Antworten
33
Aufrufe
2.666
Sempervivum
S
Zurück
Oben Unten