这个错误通常是由于尝试在异步任务完成之前使用 Bitmap.getWidth() 方法所导致的。解决方案是确保你在调用 Bitmap.getWidth() 之前先调用一些可以确保位图已完全加载的方法,例如 BitmapFactory.decodeResource 或者 BitmapFactory.decodeFile。另外,可以将 Bitmap.width() 方法放在主线程中调用,以便确保在 Bitmap 完全加载后才调用它。
下面是示例代码:
//异步任务中加载位图
class MyAsyncTask extends AsyncTask
private ImageView imageView;
public MyAsyncTask(ImageView imageView) {
this.imageView = imageView;
}
@Override
protected Bitmap doInBackground(Void... params) {
//加载位图
return BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
//确保位图加载完成后调用getWidth()方法
imageView.setImageBitmap(bitmap);
int width = bitmap.getWidth();
}
}