【问题标题】:Pass int[] to AsyncTask将 int[] 传递给 AsyncTask
【发布时间】:2013-07-13 11:49:13
【问题描述】:

我在将 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

接收这些resourceIds的doInBackground
@Override
protected Bitmap[] doInBackground(int[] ... params) {

for (int i = 0; i < data.length; i++) {
    data[i] = params[i];
}

但我在 doInBackGround 方法中遇到以下错误:

类型不匹配:无法从 int[] 转换为 int

我的代码有什么问题?

提前致谢!

【问题讨论】:

  • 为什么要使用静态类?
  • 数据[i] = 参数[i];
  • 扩展 AsyncTask 的类是静态内部类。为了避免内存泄漏,它必须是静态的。
  • @bofredo:为什么不呢?取决于首先如何定义数据
  • @user2365568 : 顺便贴一下你的数据变量的声明和定义

标签: android android-asynctask


【解决方案1】:

params[0] 这里指的是int[]。因此,您可以执行以下操作。

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

int[] data=params[0];

【讨论】:

  • 我倾向于同意这个答案。不过,在投票之前,我想进一步了解这个 data 变量。
  • 它是一个 int 数组。与“resIdImage”完全相同的类型,并引用“resIdImage”引用的相同内存位置。
【解决方案2】:

拉出你需要做的数组

int[] data = params[0];

然后你可以做你的循环

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2021-06-01
    • 2018-05-01
    相关资源
    最近更新 更多