Я пробовал приложение, в котором я использую AsyncTask для извлечения данных из таблицы sqlite. Это время от времени работает без этой проблемы. Но когда это не удается, Logcat выглядит следующим образомRuntimeException в AsyncTask при запросе базы данных sqlite
07-24 16: 06: 20,477: E/AndroidRuntime (950): FATAL ИСКЛЮЧЕНИЕ: AsyncTask # 1
07-24 16: 06: 20,477 : E/AndroidRuntime (950): java.lang.RuntimeException: Произошла ошибка во время выполнения doInBackground()
07-24 16: 06: 20.477: E/AndroidRuntime (950): at android.os.AsyncTask $ 3. сделано (AsyncTask.java:278)
07-24 16: 06: 20.477: E/AndroidRuntime (950): при java.util.concurrent.FutureTask $ Sync.innerSetException (FutureTask.java:273)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): в java.util.concurrent.FutureTask.setException (FutureTask.java:124)
07-24 16: 06: 20,477: E/AndroidRuntime (950): при java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:307)
07-24 16: 06: 20.477: E/AndroidRuntime (950): at java.util .concurrent.FutureTask.run (FutureTask.java:137)
07-24 16: 06: 20.477: E/AndroidRuntime (950): at android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:208)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1076)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:569)
07-24 16: 06: 20.477: E/AndroidRuntime (950): на java.lang.Thread .run (Thread.java:856)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): Вызванный: java.lang.NullPointerException
07-24 16: 06: 20.477: E/AndroidRuntime (950): a т com.brionsoftwares.android.pilgrimhelper.test.PilgrimDao.getPilgrim (PilgrimDao.java:21)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): в com.brionsoftwares.android.pilgrimhelper. PilgrimSearchActivity $ DataQuery.doInBackground (PilgrimSearchActivity.java:45)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): в com.brionsoftwares.android.pilgrimhelper.PilgrimSearchActivity $ DataQuery.doInBackground (PilgrimSearchActivity.java : 1)
07-24 16: 06: 20,477: Е/AndroidRuntime (950): в android.os.AsyncTask $ 2.call (AsyncTask.java:264)
07-24 16: 06: 20.477: E/AndroidRuntime (950): при java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305)
07-24 16: 06: 20.477: E/AndroidRuntime (950): ...5 более
AsyncTask
protected Void doInBackground(String... params) {
List<Pilgrim> pilgrimList=PilgrimDao.getPilgrim(pilgrimDatabase.getSqlLiteDatabase(), params);
ArrayList<Map<String, String>> list = buildData(pilgrimList);
String[] from={"Name","District"};
int[] to={android.R.id.text1, android.R.id.text2};
simpleAdapter= new SimpleAdapter(getApplicationContext(), list, R.layout.simple_list_item_2, from, to);
return null;
}
@Override
protected void onPostExecute(Void result) {
mProgressBar.setVisibility(View.GONE);
mListView.setAdapter(simpleAdapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(PilgrimSearchActivity.this, "Select", Toast.LENGTH_LONG).show();
}
});
super.onPostExecute(result);
}
}
PilgrimDao.getPilgrim метод
public static List<Pilgrim> getPilgrim(SQLiteDatabase database, String[] params) {
List<Pilgrim> shippers = new LinkedList<Pilgrim>();
String selection="Name = ?";
Cursor cursor = database.query(TABLE, COLUMNS, selection, params, null,null, null); //line 21
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Pilgrim pilgrim= new Pilgrim();
pilgrim.setName(cursor.getString(0));
pilgrim.setDistrict(cursor.getString(1));
shippers.add(pilgrim);
cursor.moveToNext();
}
cursor.close();
Log.v(PilgrimSearchActivity.TAG,"PilgrimDao returning " + shippers.size() + " shippers");
return shippers;
}
Почему выход нити? Какие изменения я могу сделать, чтобы этот код работал плавно?
Я думаю, что Исключение является самоочевидным. Вы получили исключение Null Pointer в строке 21 в файле PilgrimDao.java, что соответствует строке 21 вашего кода? –
'Курсор cursor = database.query (TABLE, COLUMNS, selection, params, null, null, null);' Это строка 21. –
Убедитесь, что база данных и параметры не являются NULL –