Liste bearbeiten/Löschen nicht möglich..komisch :(

  • 13 Antworten
  • Neuester Beitrag
Diskutiere Liste bearbeiten/Löschen nicht möglich..komisch :( im Android App Entwicklung im Bereich Betriebssysteme & Apps.
J

jayjo2012

Neues Mitglied
Hallo alle zusammen,

versuche mich gerade an meine erste Android-App. Möchte eine s.g. ToDoListe oder auch Notizzettelapp erstellen. Sinn des Ganzen ist es intern Daten zu speichern, das klappt bei mir auch bisher. Jedoch wenn ich aufs zweite Layout zugreifen möchte, wo ich die Listeneinträge bearbeiten oder löschen will wirft er mich im Emulator aus der App und zeigt mir folgendes an: "The application todoList has stopped unexpectedly. Please try again" jedoch jedes Mal wieder dasselbe Problem :(
Im Log-Fenster zeigt er mir bei Liste bearbeiten folgenden Fehlercode an :

"E/AndroidRuntime(403): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.androidhausarbeit.todoList/de.androidhausarbeit.todoList.ToDoListEditActivity}: android.database.sqlite.SQLiteException: no such column: sortierung: , while compiling: SELECT _id, eintrag FROM ListenEintraege WHERE (liste=2) ORDER BY sortierung".

Verstehe wirklich nicht woran es da liegen kann.

Sobald ich auf löschen drücke über die OnclickMethode kommt der Fehlercode:

"E/AndroidRuntime(414): java.lang.IllegalArgumentException: Unknown URI: content://de.androidhausarbeit.todoList/listen/2"

Durch diese Fehler lässt er mich nicht auf mein zweites Layout..

Habe 2 Activitys die ToDoListEditActivity habe ich als Textdatei miteingefügt, sowie ein Screenshot des Fehlercodes im Log-Fenster.

Wo kann denn da der Fehler liegen..Ich hoffe Ihr könnt mir helfen und danke euch vielmals für eure Mühe :)
 

Anhänge

  • 219,5 KB Aufrufe: 157
  • Code_ToDoListEditActivity.txt
    4,9 KB Aufrufe: 317
Micka

Micka

Fortgeschrittenes Mitglied
SELECT _id, eintrag FROM ListenEintraege WHERE (liste=2) ORDER BY sortierung
Du selektierst dir in deinem cursor die Spalten "_id" und "eintrag" willst dann aber nach Spalte sortierung sortieren. das klappt nicht. Man kann nur nach Spalten sortieren die auch im cursor enthalten sind wenn ich micht nicht irre

Cursor cursor = managedQuery(listenEintraegeContentUri, new String[ ] { ListenEintraege.Columns._ID, ListenEintraege.Columns.EINTRAG, ListenEintraege.Columns.SORTIERUNG}, "", null, ListenEintraege.Columns.SORTIERUNG );
so sollte es klappen
 
J

jayjo2012

Neues Mitglied
Danke für deine Antwort :)

hmm durch Sortierung hinten im Cursor soll die Sortierung des Eintrags in der Liste dargestellt sein. Wie würdest du es deines Erachtens besser finden bzw. umschreiben, kann ich ja dann testen und schauen ob es klappt

Gruß

Der ursprüngliche Beitrag von 17:23 Uhr wurde um 18:32 Uhr ergänzt:

Hallo alle zusammen,

habe nochmal nachgeschaut, habe noch ein Package .Provider mit einer Listeneintraege.java wo ich folgende Methode habe :

public static final String CREATE_TABLE =
"create table "+TABLE_NAME+"( "+
Columns._ID + " integer primary key autoincrement, "+
Columns.LISTE + " integer, "+
Columns.EINTRAG + " text, "+
Columns.SORTIERUNG + " integer, "+
")";


Und in meiner TodoListEditActivity hatte ich:

Cursor cursor = managedQuery(listenEintraegeContentUri, new String[] { ListenEintraege.Columns._ID, ListenEintraege.Columns.EINTRAG}, "", null, ListenEintraege.Columns.SORTIERUNG );

Habe die jetzt erweitert weil er mir ja den Fehlercode angezeigt hatte wie ich oben geschildert hatte mit:

Cursor cursor = managedQuery(listenEintraegeContentUri, new String[ ] { ListenEintraege.Columns._ID, ListenEintraege.Columns.LISTE,ListenEintraege.Columns.EINTRAG}, "", null, ListenEintraege.Columns.SORTIERUNG );

Dachte müsste vielleicht alle Attribute berücksichtigen und er mir dadurch no such columns angezeigt hat, jedoch klappt es immernoch nicht, über jede Hilfe wäre ich sehr dankbar...

Der ursprüngliche Beitrag von 18:32 Uhr wurde um 19:08 Uhr ergänzt:

Micka schrieb:
Du selektierst dir in deinem cursor die Spalten "_id" und "eintrag" willst dann aber nach Spalte sortierung sortieren. das klappt nicht. Man kann nur nach Spalten sortieren die auch im cursor enthalten sind wenn ich micht nicht irre

Cursor cursor = managedQuery(listenEintraegeContentUri, new String[ ] { ListenEintraege.Columns._ID, ListenEintraege.Columns.EINTRAG, ListenEintraege.Columns.SORTIERUNG}, "", null, ListenEintraege.Columns.SORTIERUNG );

so sollte es klappen
Hab es soebend probiert wie du es mir aufgezeigt hast, hat jedoch nicht geklappt..zeigt mir immernoch diesen fehler an:

"android.database.sqlite.SQLiteException: no such column: sortierung: , while compiling: SELECT _id, eintrag, sortierung FROM ListenEintraege WHERE (liste=1) ORDER BY sortierung"

schade..mano :( bin am verzweifeln..
 
Micka

Micka

Fortgeschrittenes Mitglied
Das ist richtig. Hat deine Tabelle überhaupt eine Spalte “ sortierung“?
 
J

jayjo2012

Neues Mitglied
Hey Micka,

ehm wie welche Tabelle meinste denn..ist es eigentlich relevant das mit der sortierung bzw sinnvoll könnte man eigentlich logischerweise dann auch weglassen oder ?

Glaube wäre sinnvoll wenn ich dir mal meine datei maile oder so hättest es ja dann vor dir..
 
Micka

Micka

Fortgeschrittenes Mitglied
Wenn jemand anders es dir löst ist dir nicht geholfen. Beim programmieren ist Erfahrung sammeln super wichtig. Wenn ich morgen Am Pc bin guck ich mir deine Datei nochmal an, aber kann nichts versprechen. Bin auch noch relativ frisch auf dem Android Markt. Ich würde dir aber ein Bixh empfehlwn, oder Tutorials, damit lernt man schnell. Aber verstehen, nicht kopieren. Ich kann dir Androidbuch.de empfehlen, damit habe ich den Einstieg gefunden. Dort wird eine Beispiel App mit Code erklärt, Die erste Auflage gibts dort kostenlos als PDF Download.
 
J

jayjo2012

Neues Mitglied
Hey Mika :)
Ich habe ein videotutorial von Galileo das neue Apps entwickeln mit android 4.0, sowie nen kleines Buch. Klar ist es ja auch das was ich möchte die Erfahrung sammeln, doch nirgends ist es wirklich gut erklärt detailliert hinsichtlich des SQ-Lites. Momentan komme ich da leider bisher noch nicht weiter :)
 
Micka

Micka

Fortgeschrittenes Mitglied
Im Androidbuch wird, das recht gut erklärt, habs da auch verstanden. Hast du MySql und Java Erfahrung?
 
Micka

Micka

Fortgeschrittenes Mitglied
Wenn du möchtest häng mal dein Project gezipped an einen Beitrag, dann gucke ich gerne mal ob ich dir weiterhelfen kann.
 
J

jayjo2012

Neues Mitglied
Micka schrieb:
Wenn du möchtest häng mal dein Project gezipped an einen Beitrag, dann gucke ich gerne mal ob ich dir weiterhelfen kann.

Super ich danke dir für deine Mühe, habe es hier gezipped hinzugefügt..hoffe das es klappt :)
 
Zuletzt bearbeitet:
Micka

Micka

Fortgeschrittenes Mitglied
Okay, gucke morgen Mittag mal rein.
 
Micka

Micka

Fortgeschrittenes Mitglied
Kann es sein das du etwas vergessen hast?

import de.androidhausarbeit.todoListLibrary.Speech.Dictate; cannot be resolved

Der ursprüngliche Beitrag von 06:27 Uhr wurde um 06:52 Uhr ergänzt:

Hy, ich würde die Änderungen gern selbst vornehmen, aber wenn ich ehrlich bin hab ich jetzt nicht die Zeit mich in den kompletten Code einzulesen um zu sehen wo ich was ändere. Denke du findest die stellen wohl ohnehin schneller.


Wenn ich dein Projekt starte kommt erstmal folgendes
06-20 04:29:21.262: E/Database(337): Failure 1 (near ")": syntax error) on 0x298f30 when preparing 'create table ListenEintraege( _id integer primary key autoincrement, liste integer, eintrag text, sortierung integer, )'.
Das sollte sich schnell beheben lassen, das , zum Schluß der Klammer ist falsch.
create table ListenEintraege( _id integer primary key autoincrement, liste integer, eintrag text, sortierung integer) wäre als sql Statement okay

06-20 04:29:21.332: E/AndroidRuntime(337): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.androidhausarbeit.todoList/de.androidhausarbeit.todoList.ToDoListActivity}: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/de.androidhausarbeit.todoList/databases/todoList.db
06-20 04:29:21.332: E/AndroidRuntime(337): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-20 04:29:21.332: E/AndroidRuntime(337): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-20 04:29:21.332: E/AndroidRuntime(337): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-20 04:29:21.332: E/AndroidRuntime(337): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-20 04:29:21.332: E/AndroidRuntime(337): at android.os.Handler.dispatchMessage(Handler.java:99)
06-20 04:29:21.332: E/AndroidRuntime(337): at android.os.Looper.loop(Looper.java:123)
06-20 04:29:21.332: E/AndroidRuntime(337): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-20 04:29:21.332: E/AndroidRuntime(337): at java.lang.reflect.Method.invokeNative(Native Method)
06-20 04:29:21.332: E/AndroidRuntime(337): at java.lang.reflect.Method.invoke(Method.java:507)
06-20 04:29:21.332: E/AndroidRuntime(337): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-20 04:29:21.332: E/AndroidRuntime(337): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-20 04:29:21.332: E/AndroidRuntime(337): at dalvik.system.NativeStart.main(Native Method)
06-20 04:29:21.332: E/AndroidRuntime(337): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/de.androidhausarbeit.todoList/databases/todoList.db
06-20 04:29:21.332: E/AndroidRuntime(337): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:199)
06-20 04:29:21.332: E/AndroidRuntime(337): at de.androidhausarbeit.todoList.Provider.ToDoListContentProvider.query(ToDoListContentProvider.java:268)
return dbhelper.getReadableDatabase().query(Liste.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
ich würde besser ein cursor zurückgeben, mit dem cursor kannst du dann ganz bequem weiterarbeiten. Laut Exception wird dort ein onUpgrade ausgeführt, dafür musst du aber eine getWriteableDatabase() nehmen

wenn das geändert ist und weitere Probleme auftauchen guck ichs mir gern nochm an. Einfach schreiben und die aktuelle Version anhängen
 
J

jayjo2012

Neues Mitglied
Hey hey danke dir..hab vorhin den Fehler gefunden...Problem war ich musste die datei im ddms raushauen und wieder neu laden, weil ich ja Änderungen im Create-Table gemacht hatte...

Es ist kurz vor dem Laufen, habe jedoch kurz vorm Ende folgenden Fehler:

"E/AndroidRuntime(10142): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.androidhausarbeit.todoList/de.androidhausarbeit.todoList.ToDoListEditActivity}: java.lang.IllegalArgumentException: Unknown URI: content://de.androidhausarbeit.todoList/listen/3"

Verstehe aber nicht warum, denn in der TodoListEditActivity unter
private void eintragErstellen( ) {
....

habe ich doch richtig : "
Uri listenEintraegeContentUri = Uri.withAppendedPath(contentUri,
ListenEintraege.CONTENT_DIRECTORY);

und damit doch das Verzeichnis der Listeneinträge richtig deklariert oder nicht... oder weißt du wo der Fehler da liegt?!

Danke dir :)
 
Micka

Micka

Fortgeschrittenes Mitglied
Hey, tut mir leid mit Uri habe ich noch nie gearbeitet. Ich mach das immer über Intent Extras. Aber da kao.n dir jemand anders bestimmt weiterhelfen.