Добрый вечер всем, у меня есть пролема, я думаю, с извлечением контента ценности в базе данных Android.Извлечение данных из базы данных SQL без успеха
Прежде всего, я попробовал приложение на устройстве (SGS3), и база данных правильно создает и заполняется запросом, но когда я пытаюсь вызвать извлечение из курсора значения, LogCat даст мне ошибку NullPointerExeption , Я прочитал некоторые другие темы, но я не нашел ответа на свою проблему.
Это код для создания базы данных, запроса и позиции данных:
public static Cursor fetchProducts(){ //attenzione cambioato,messo static
return mDb.query(PositionsMetaData.POSITIONS_TABLE, null,null,null,null,null,null);
}
static class PositionsMetaData {
static final String POSITIONS_TABLE = "position";
static final String ID = "_id";
static final String POSITIONS_NAME_KEY = "name";
static final String POSITIONS_LATITUDE_KEY = "lat";
static final String POSITIONS_LONGITUDE_KEY = "lon";
}
private static final String POSITIONS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
+ PositionsMetaData.POSITIONS_TABLE + " ("
+ PositionsMetaData.ID + " integer primary key autoincrement, "
+ PositionsMetaData.POSITIONS_NAME_KEY + " text, "
+ PositionsMetaData.POSITIONS_LATITUDE_KEY + " double not null, "
+ PositionsMetaData.POSITIONS_LONGITUDE_KEY + " double not null); ";
Незнайка почему, но затмение хочет курсор с статичным, я не уверен в этом и почему это, кстати, Тхи код для извлечения данных:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listagps);
TextView nomelista=(TextView)findViewById(R.id.nomelista);
TextView latitudinelista=(TextView)findViewById(R.id.latitudinelista);
TextView longitudinelista=(TextView)findViewById(R.id.longitudinelista);
// CREAZIONE LISTA PUNTI GPS SU LAYOUT LISTAGPS
ListView posizionigps=(ListView)findViewById(R.id.listagps);
final listagpsdb db = new listagpsdb(getApplicationContext());
db.open();
Cursor c=listagpsdb.fetchProducts();
startManagingCursor(c);
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter=new SimpleCursorAdapter (
this,
R.layout.listagps_item,
c,
new String[]{listagpsdb.PositionsMetaData.POSITIONS_NAME_KEY,listagpsdb.PositionsMetaData.POSITIONS_LONGITUDE_KEY,listagpsdb.PositionsMetaData.POSITIONS_LATITUDE_KEY},
new int []{R.id.nomelista,R.id.longitudinelista,R.id.latitudinelista});
posizionigps.setAdapter(adapter);
int nomecol=c.getColumnIndex(listagpsdb.PositionsMetaData.POSITIONS_NAME_KEY);
int loncol=c.getColumnIndex(listagpsdb.PositionsMetaData.POSITIONS_LONGITUDE_KEY);
int lancol=c.getColumnIndex(listagpsdb.PositionsMetaData.POSITIONS_LATITUDE_KEY);
if(c.moveToFirst()){
do {
nomelista.append(c.getString(nomecol));
latitudinelista.append(c.getString(lancol));
longitudinelista.append(c.getString(loncol));
} while (c.moveToNext());
}
db.close();
}
}
LogCat дает мне ошибку для nomelista, latitudinelista и longitudinelista, весь нуля, но в БД все заселены.
Любые предложения по решению этой проблемы? Неправильное управление курсором или потому, что текстовое представление не задано данными? Я пробовал бесконечно, я знаю, но без успеха.
Большое спасибо всем, хотят, чтобы помочь мне :)
ПОЛНЫЙ LogCat ПРОБЛЕМЫ
05-05 14:42:22.613: E/AndroidRuntime(988): FATAL EXCEPTION: main
05-05 14:42:22.613: E/AndroidRuntime(988): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.drive.info/com.drive.info.listagps}: java.lang.NullPointerException
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.ActivityThread.access$600(ActivityThread.java:130)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.os.Handler.dispatchMessage(Handler.java:99)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.os.Looper.loop(Looper.java:137)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.ActivityThread.main(ActivityThread.java:4745)
05-05 14:42:22.613: E/AndroidRuntime(988): at java.lang.reflect.Method.invokeNative(Native Method)
05-05 14:42:22.613: E/AndroidRuntime(988): at java.lang.reflect.Method.invoke(Method.java:511)
05-05 14:42:22.613: E/AndroidRuntime(988): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-05 14:42:22.613: E/AndroidRuntime(988): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-05 14:42:22.613: E/AndroidRuntime(988): at dalvik.system.NativeStart.main(Native Method)
05-05 14:42:22.613: E/AndroidRuntime(988): Caused by: java.lang.NullPointerException
05-05 14:42:22.613: E/AndroidRuntime(988): at com.drive.info.listagps.onCreate(listagps.java:68)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.Activity.performCreate(Activity.java:5008)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
05-05 14:42:22.613: E/AndroidRuntime(988): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
05-05 14:42:22.613: E/AndroidRuntime(988): ... 11 more
Пожалуйста, добавьте сюда свой полный ловушка. – Sajmon
Добавлено в основной пост полный логарифм :) Строка 68 - это строка nomelista.append (c.getString (nomecol)); –
Похоже, что номенклатура TextView имеет значение null. Является ли номелиста оскверненной в R.layout.listagps? – bakriOnFire