我正在尝试在 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) {
}
}
日志:
最佳答案
改变这个:
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/