如何将原始int传递给我的AsyncTask?

时间:2015-08-18 10:02:39

标签: java android android-asynctask

我希望将一个int变量传递给我的AsyncTask

int position = 5;

我宣布我的AsyncTask是这样的:

class proveAsync extends AsyncTask<int, Integer, Void> {

    protected void onPreExecute(){
    }

    protected Void doInBackground(int... position) {
    }

    .
    .
    .

但我收到的错误是:

  

类型参数不能是基本类型

我可以传递int[]Integer个变量,但绝不会传递int个变量,我会像这样执行AsyncTask

new proveAsync().execute(position);

我能做些什么来传递这个position吗?

提前致谢!

3 个答案:

答案 0 :(得分:17)

将参数传递为Integer

class proveAsync extends AsyncTask<Integer, Integer, Void> {

    protected void onPreExecute(){
    }

    protected Void doInBackground(Integer... position) {
        int post = position[0].intValue();
    }

    .
    .
    .

执行时执行此操作

new proveAsync().execute(new Integer(position));

您可以使用AsyncTask

获取intValue()中的int值

答案 1 :(得分:5)

像这样使用它。

class proveAsync extends AsyncTask<Integer, Void, Void> {

    protected void onPreExecute(){
    }

    protected Void doInBackground(Integer... params) {
        int position = params[0];
    ...

在数组中传递位置。 e.g:

Integer[] asyncArray = new Integer[1];
asyncArray[0] = position;
new proveAsync().execute(asyncArray);

答案 2 :(得分:3)

您也可以使用AsyncTask的构造函数。

class proveAsync extends AsyncTask<Void, Void, Void> {
int position;
     public proveAsync(int pos){
      position = pos;
     }

    protected void onPreExecute(){
    }

    protected Void doInBackground(Void... args) {
    }

    .
    .

然后使用它:

new proveAsync(position).execute();

并且您可以按照要求传递任何内容,而不会以这种方式更改返回类型和参数。