如何在 Android Studio 中使用 AsyncTask 从可绘制对象设置图像
How to set image from drawables using AsyncTask in Android Studio
我正在尝试执行一项非常简单的任务(在后台将图像加载到 ImageView),但无法正常工作。非常感谢任何帮助。
这是我目前的情况:
这就是我在主线程中创建时调用 class 的方式:
LoadImage newImage=new LoadImage();
newImage.execute(myImgeView);
接下来我创建了 class:
public class LoadImage extends AsyncTask<ImageView, Void, ImageView> {
ImageView imageView;
@Override
protected ImageView doInBackground(ImageView... params) {
Log.e("myTag",": Can it see this class from where I call it? Yes it does" );
imageView.setImageResource(R.drawable.myNewImage);
return imageView;
}
}
我不知道如何正确设置它。它崩溃说:
尝试在空对象引用上调用虚拟方法 'void android.widget.ImageView.setImageResource(int)'。
在此先感谢您的帮助。
问题出在这段代码:
imageView.setImageResource(R.drawable.myNewImage);
variable
imageView
从AsyncTask
Class看不到,你要的imageView在params
数组里面所以可以用 params[0]
引用它。所以将上面的代码替换为:
ImageView imageView = params[0];
imageView.setImageResource(R.drawable.myNewImage);
return imageView;
AsyncTask 已弃用。对于这种类型的操作,建议使用一些库并使事情变得更容易:Picasso, Glide, Fresco...etc
您不应再使用 AsyncTask,因为它已被弃用,就像已经提到的 jesusd0897 一样。如果您需要从远程资源(例如 API)加载图像,那么 Glide 或其他库会为您完成这项工作。
但对于这种简单的情况,您不需要异步任务。只需在 Activity/Fragment 等的主线程上执行即可:
imageView.setImageResource(R.drawable.myNewImage)
我正在尝试执行一项非常简单的任务(在后台将图像加载到 ImageView),但无法正常工作。非常感谢任何帮助。
这是我目前的情况: 这就是我在主线程中创建时调用 class 的方式:
LoadImage newImage=new LoadImage();
newImage.execute(myImgeView);
接下来我创建了 class:
public class LoadImage extends AsyncTask<ImageView, Void, ImageView> {
ImageView imageView;
@Override
protected ImageView doInBackground(ImageView... params) {
Log.e("myTag",": Can it see this class from where I call it? Yes it does" );
imageView.setImageResource(R.drawable.myNewImage);
return imageView;
}
}
我不知道如何正确设置它。它崩溃说: 尝试在空对象引用上调用虚拟方法 'void android.widget.ImageView.setImageResource(int)'。
在此先感谢您的帮助。
问题出在这段代码:
imageView.setImageResource(R.drawable.myNewImage);
variable
imageView
从AsyncTask
Class看不到,你要的imageView在params
数组里面所以可以用 params[0]
引用它。所以将上面的代码替换为:
ImageView imageView = params[0];
imageView.setImageResource(R.drawable.myNewImage);
return imageView;
AsyncTask 已弃用。对于这种类型的操作,建议使用一些库并使事情变得更容易:Picasso, Glide, Fresco...etc
您不应再使用 AsyncTask,因为它已被弃用,就像已经提到的 jesusd0897 一样。如果您需要从远程资源(例如 API)加载图像,那么 Glide 或其他库会为您完成这项工作。
但对于这种简单的情况,您不需要异步任务。只需在 Activity/Fragment 等的主线程上执行即可:
imageView.setImageResource(R.drawable.myNewImage)