Каким-то образом при отладке небольшого Android-приложения, основанного на местоположении, я получаю странное исключение. Посмотрите и поделитесь своими идеями:
Я подключил ListActivity
к базе данных sqlite3 через ContentProvider
. Теперь всегда, когда я запускаю ListActivity
, программа умирает с исключением, сообщающим мне
column '_id' does not exist
(без имени таблицы) для строки, в которой я создаю объект SimpleCursorAdapter
для моего ListActivity
.
Cursor cursor = managedQuery(intent.getData(), new String[] {TrackTable.START_LOC, TrackTable.END_LOC}, null, null,
TrackTable.DEFAULT_SORT_ORDER);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.gps_track_entry, cursor, new String[] {
TrackTable.COLUMN_NAME_TIME_START,
TrackTable.COLUMN_NAME_TIME_END
}, new int[] { R.id.l_start, R.id.l_end });
Моя база данных выглядит так:
sqlite> .tables
.tables
android_metadata ocation track
sqlite> . schema track
.schema track
CREATE TABLE track (
_id INTEGER PRIMARY KEY,
start_location INTEGER,
end_location INTEGER,
start_time TEXT,
end_time TEXT
);
sqlite> .schema location
.schema location
CREATE TABLE location (
_id INTEGER PRIMARY KEY,
long TEXT,
lat TEXT,
alt TEXT,
accu TEXT,
bear TEXT,
sped TEXT,
time TEXT);
sqlite> .schema android_metadata
.schema android_metadata
CREATE TABLE android_metadata (locale TEXT);
Я имею в виду, что маловероятно, что ошибка является ошибкой Android, но она определенно выглядит так, потому что единственной таблицей без _id является android_metadata
. Но, возможно, я написал что-то странным образом, что виртуальная машина теперь думает, что я хочу использовать android_metadata
, а не track
, который я на самом деле хочу использовать.