我写了一个Asynctask
private class dboperation extends AsyncTask<Void, Void, Cursor>
我是 android 的新手,通过在 google 中进行大量搜索来撰写文章,但对如何使用这些参数从另一个类调用异步任务感到震惊。
代码
private class dboperation extends AsyncTask<Void, Void, Cursor>{
@Override
protected Cursor doInBackground(Void... params) {
// TODO Auto-generated method stub
getstocks="Select " + st.column1 + " as _id, " + st.column3 + " From "+ st.tablename;
a1=Database.getInstance(getApplicationContext()).getWritableDatabase().rawQuery(getstocks, null);
return null;
}
protected void onPostExecute(Cursor result) {
if(a1.moveToNext())
{
displaystocks.setVisibility(View.INVISIBLE);
}
final poplist populatestocks=new poplist(getApplicationContext(),a1) ;
popstocks.setAdapter(populatestocks);
}
@Override
protected void onPreExecute() {
}
protected void onProgressUpdate(Void... values) {
}
}
当我以这种方式调用时,出现错误“Void cannot be resolved into variable”。
dboperation.execute(Void,Void,a1);
我该如何解决?
最佳答案
在 异步任务
- 第一个参数表示您可以传递给执行的类型。 Void 意味着你不能传递任何东西
Java 中的类名应该以大写字母开头。请重命名它以提高其他人的可读性。
所以正确的调用应该是
new DbOperation().execute();
第二个参数是一种数据类型,您可以通过从 doInBackground() 调用 publishProgress() 来发布。您不使用 publishProgress,因此在这种情况下无需提及。
第三个参数表示将传递给 onPostExecute() 的类型。要将 Cursor 传递给 onPostExecute,您必须从 doInBackground 返回它
@Override protected Cursor doInBackground(Void... params) { getstocks="Select " + st.column1 + " as _id, " + st.column3 + " From "+ st.tablename; return Database.getInstance(getApplicationContext()).getWritableDatabase().rawQuery(getstocks, null); }
关于android - 以 void 和 cursor 作为参数调用 Asynctask execute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436108/