2013-07-15 81 views
0

我有一个问题需要将一个int数组传递给一个扩展AsyncTask的类。将int []传递给AsyncTask

int数组由位图图像的resourceId组成。

final int[] resIdImage = resId_image; 

,我通过发送此向量:

execute(resIdImage); 

和延伸的AsyncTask

static class BitmapWorkerTask extends AsyncTask <int[], Void, Bitmap[]> 
    private int[] data = new int[9]; 

并通过PARAMS

@Override 
protected Bitmap[] doInBackground(int[] ... params) { 

for (int i = 0; i < data.length; i++) { 
    data[i] = params[i]; 
} 
临危这些resourceIds的doInBackground类0

但我得到了以下错误的int doInBackGround法:

类型missmatch:不能从int []转换为int

什么是错我的代码?

在此先感谢!

+0

为什么使用静态类? –

+0

data [i] = params [i]; <--- does not像那样 – bofredo

+0

扩展AsyncTask的类是一个静态的内部类。为了避免内存泄漏,它必须是静态的。 –

回答

3

params[0]这里指的int[]。所以你可以做到以下几点。

@Override 
protected Bitmap[] doInBackground(int[] ... params) { 

int[] data=params[0]; 
+0

我倾向于同意这个答案。尽管如此,我想在upvoting之前更多地了解这个'data'变量。 – njzk2

+0

它是一个int数组。与'resIdImage'类型完全相同,并且引用了'resIdImage'引用的相同内存位置。 – Dulanga

1

拔出你需要做的

int[] data = params[0]; 

数组那么你可以做你的循环

相关问题