Я пытаюсь вставить данные в базу данных в потоке, но у меня есть ошибка:NullPointerException при попытке вставить данные в базу данных в теме
01-23 17:17:58.127: E/AndroidRuntime(1400): FATAL EXCEPTION: AsyncTask #1
01-23 17:17:58.127: E/AndroidRuntime(1400): java.lang.RuntimeException: An error occured while executing doInBackground()
01-23 17:17:58.127: E/AndroidRuntime(1400): at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-23 17:17:58.127: E/AndroidRuntime(1400): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
01-23 17:17:58.127: E/AndroidRuntime(1400): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
01-23 17:17:58.127: E/AndroidRuntime(1400): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
01-23 17:17:58.127: E/AndroidRuntime(1400): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-23 17:17:58.127: E/AndroidRuntime(1400): at java.lang.Thread.run(Thread.java:841)
01-23 17:17:58.127: E/AndroidRuntime(1400): Caused by: java.lang.NullPointerException
01-23 17:17:58.127: E/AndroidRuntime(1400): at pl.pawelfrydrych.flyingball.MyTask.insertData(MyTask.java:59)
01-23 17:17:58.127: E/AndroidRuntime(1400): at pl.pawelfrydrych.flyingball.MyTask.doInBackground(MyTask.java:22)
01-23 17:17:58.127: E/AndroidRuntime(1400): at pl.pawelfrydrych.flyingball.MyTask.doInBackground(MyTask.java:1)
01-23 17:17:58.127: E/AndroidRuntime(1400): at android.os.AsyncTask$2.call(AsyncTask.java:287)
Я хочу, чтобы добавлять позиции ускорения от класса MainActivity (от переменные) через каждые 1 секунду, поэтому я вставляю эти данные в ContentValues, а затем из contentvalues в базу данных.
import java.util.Date;
import android.content.ContentValues;
import android.hardware.SensorEvent;
import android.os.AsyncTask;
import android.util.Log;
public class MyTask extends AsyncTask<Void, Void, Void> {
MainActivity main = new MainActivity();
private int abc;
float xPositionGlobal, yPositionGlobal;
@Override
protected Void doInBackground(Void... arg0) {
try {
insertData();
} catch (InterruptedException e) {
Log.d("appname","błąd w doInBackground");
e.printStackTrace();
}
return null;
}
public void onSensorChanged(SensorEvent event){
float xPosition = event.values[0];
float yPosition = event.values[1];
xPositionGlobal = xPosition;
yPositionGlobal = yPosition;
}
public void insertData() throws InterruptedException{
ContentValues values = new ContentValues();
Date date = new Date();
while(true){
long millis = System.currentTimeMillis();
abc++;
values.put(Database.ID, 1+abc);
values.put(Database.LEFT_POSITION, xPositionGlobal);
values.put(Database.RIGHT_POSITION, yPositionGlobal);
// values.put(Database.GPS, main.GPSposition);
values.put(Database.GPS, "3");
values.put(Database.TIME, date.toString());
if(main.myDBAdapter.db != null){
main.myDBAdapter.db.insert("baza", null, values);
Thread.sleep(1000 - millis % 1000);
}else{
Log.d(Database.DB_NAME,"db is null");
}
}
}
OnClick метод от MainActivity:
public void onClick(View v) {
switch(v.getId()){
case R.id.bStart:
myDBAdapter = new Database(this).open();
new MyTask().execute();
case R.id.bStop:
myDBAdapter.close();
break;
}
}
}
При использовании базы данных myDBAdapter = новую базу данных(); , logcat say db is null
stack trace/show? – Hades
Я пытаюсь найти информацию о том, как я могу получить полную трассировку стека, но у меня нет ни малейшего представления, извините, я новичок :( – Algeroth