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

标签 android android-asynctask

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

相关文章:

java - View - 没有零参数构造函数

Android:计算字符串和可绘制对象

android - Geocoder 的 isPresent() 方法总是返回 false

java - 使用 shape drawable 作为我的背景 xml

java - 应用程序崩溃而无法执行 AsyncTask

java - Firebase 中的重复属性

java - 使用 AsyncTask 将数据写入数据库更好吗?

java - 在哪里放置 AsyncTask() 以便我可以调用它来加载图像?

android - ListFragment 中没有加载圆圈

java - 将变量从 AsyncTask 传递到 doInBackground Android