Ich habe Probleme mit etwas, das im Notepad-Beispiel funktioniert. Hier ist der Code aus dem NotepadCodeLab / Notepadv1Solution:
String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
int[] to = new int[] { R.id.text1 };
SimpleCursorAdapter notes = new SimpleCursorAdapter(this,
R.layout.notes_row, c, from, to);
Dieser Code scheint gut zu funktionieren. Um jedoch klar zu sein, habe ich das ADB- Dienstprogramm und SQLite 3 ausgeführt. Ich habe das Schema wie folgt überprüft:
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE notes (_id integer primary key autoincrement, title text
not null, body text not null);
Alles scheint mir gut zu sein.
Nun zu meiner Bewerbung, die, soweit ich sehen kann, mit ein paar geringfügigen Änderungen im Grunde dieselbe ist. Ich habe meinen Code vereinfacht und vereinfacht, aber das Problem besteht weiterhin.
String[] from = new String[] { "x" };
int[] to = new int[] { R.id.x };
SimpleCursorAdapter adapter = null;
try
{
adapter = new SimpleCursorAdapter(this, R.layout.circle_row, cursor, from, to);
}
catch (RuntimeException e)
{
Log.e("Circle", e.toString(), e);
}
Wenn ich meine Anwendung ausführe, erhalte ich eine RuntimeException und die folgenden Ausdrucke in LogCat aus meiner Log.e()
Anweisung:
LogCat-Nachricht:
java.lang.IllegalArgumentException: Spalte '_id' existiert nicht
Zurück zu SQLite 3, um zu sehen, was an meinem Schema anders ist:
sqlite> .schema CREATE TABLE android_metadata (Gebietsschema TEXT); CREATE TABLE-Kreise (_id Integer-Primärschlüssel-Autoinkrement, Sequenz-Integer, Radius Real, x Real, y Real);
Ich sehe nicht, wie mir die '_id' fehlt.
Was habe ich falsch gemacht?
Eine Sache, die sich zwischen meiner Anwendung und dem Notepad-Beispiel unterscheidet, ist, dass ich meine Anwendung zunächst mit dem Eclipse-Assistenten von Grund auf neu erstellt habe, während die Beispielanwendung bereits zusammengestellt ist. Gibt es eine Art von Umgebungsänderung, die ich vornehmen muss, damit eine neue Anwendung eine SQLite-Datenbank verwendet?