首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命异常: AsyncTask #3 (执行doInBackground()时出错)

致命异常: AsyncTask #3 (执行doInBackground()时出错)
EN

Stack Overflow用户
提问于 2016-02-14 06:26:30
回答 1查看 1.3K关注 0票数 0

当我运行下面的代码时,我得到了一个数组索引错误。

代码语言:javascript
复制
public class GetImageFileTask extends AsyncTask {

    private OnGetImageFileListener listener;

    public GetImageFileTask(OnGetImageFileListener listener) {
        this.listener = listener;
    }

    @Override
    protected Object doInBackground(Object[] params) {
        File imageFile = null;
        ImageHelper imageHelper = (ImageHelper) params[0];
        ImageView imageView = (ImageView) params[1];

        try {
            imageFile = imageHelper.getFileFromImageView(imageView);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return imageFile;
    }

    @Override
    protected void onPostExecute(Object imageFile) {
        listener.onGotImageFile((File) imageFile);
    }
}

我不明白为什么。这段代码可以在另一个项目中工作,但不能在我目前正在处理的项目中工作。这是错误日志。

代码语言:javascript
复制
02-13 17:20:21.073  30900-30985/app.protoype3 E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #4
Process: app.protoype3, PID: 30900
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)
 Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at app.protoype3.GetImageFileTask.doInBackground(GetImageFileTask.java:24)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)
EN

回答 1

Stack Overflow用户

发布于 2016-02-14 06:34:59

代码语言:javascript
复制
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

也许错误是你的参数长度是1?你如何执行你的AsyncTask?

你需要给task.execute(imageHelper, imageView)打电话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35386068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档