java - AsyncTask 得到一个错误的字符串参数

标签 java android string bitmap android-asynctask

我正在尝试在 asyncTask 中加载位图,在 onClick 中我将执行 myAsyncTask 并获取位图作为结果。我坚持使用 NullPointerException,因为我放入 myAsyncTack 的字符串参数解码错误(请参阅 logcat 屏幕截图,第一行是字符串数据 [位置] 的 log.d,第二行来自 myAsyncTask 解码方法)。在我的代码中,我需要在后台打开大量图像,如何使用 myAsyncTask 正确执行此操作?

执行:

        Log.d("Files", "DATA: " + data[position]);
        try{
            ImageView mImg = (ImageView) vi.findViewById(R.id.imageView);
            BitmapTask btmt = new BitmapTask();
            btmt.execute(data[position]);
            mImg.setImageBitmap(btmt.get());
        } catch (Exception e){
            e.printStackTrace();
        }


        return vi;

异步:

public class BitmapTask extends AsyncTask {

        @Override
        protected Bitmap doInBackground(String... bmt) {
            Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/MANUAL/workflow/" + bmt);
            int targetWidth  = bm.getWidth() / 1;
            int targetHeight = bm.getHeight() / 1;

            Bitmap size = Bitmap.createBitmap(bm, 0, 0, targetWidth, targetHeight, matrix(), true);
            return size;
        }

        @Override
        protected void onPostExecute(Bitmap result) {

        }

    }

日志:

enter image description here

最佳答案

改变这个:

Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/MANUAL/workflow/" + bmt);

为此:

Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/MANUAL/workflow/" + bmt[0]);

您必须获取 String... bmt 字符串数组的第一个元素。

关于java - AsyncTask 得到一个错误的字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23106657/

相关文章:

java - 除了 return secondarypass 之外,正确的返回语句是什么?

android - 静态变量是否不受生命周期垃圾收集的影响?

android - 如何在 firebase 中将循环中的 child 添加为 userId

c - 我的递归函数有问题

MYSQL:char 字段在 select 语句中被截断

java - 如何根据 ArrayListMultiMap 值的大小将键添加到列表中?

java - 如何在java中加载合成风格

java - 从 Excel 中复制文本并将其粘贴到文本框中,然后单击“搜索”后的链接

java - Android 版本的 Microsoft Graph java Sdk 和 proguard 问题

.net - VB日期转换