gpt4 book ai didi

android - 以 void 和 cursor 作为参数调用 Asynctask execute

转载 作者:行者123 更新时间:2023-11-29 14:49:42 24 4
gpt4 key购买 nike

我写了一个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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com