加载图像视图时出现Android错误
我正在尝试在imageview中加载图像,但它没有加载链接的任何图像。 链接中有图片,但我仍然有空白加载图像视图时出现Android错误,android,image-processing,bitmap,imageview,bitmapfactory,Android,Image Processing,Bitmap,Imageview,Bitmapfactory,我正在尝试在imageview中加载图像,但它没有加载链接的任何图像。 链接中有图片,但我仍然有空白 private class LoadImage extends AsyncTask<String, String, Bitmap> { @Override protected void onPreExecute() { super.onPreExecute(); } protected Bitmap doInBac
private class LoadImage extends AsyncTask<String, String, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Bitmap doInBackground(String... args) {
try {
String url = "http://www.learn2crack.com/wp-content/uploads/2014/04/node-cover-720x340.png";
URL urlurl = new URL(url);
bitmap = BitmapFactory.decodeStream(urlurl.openConnection().getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
protected void onPostExecute(Bitmap image) {
if(image != null){
img.setImageBitmap(image);
}else{
Toast.makeText(activity.getApplicationContext(), "Image Does Not exist or Network Error", Toast.LENGTH_SHORT).show();
}
}
}
私有类LoadImage扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
受保护位图doInBackground(字符串…参数){
试一试{
字符串url=”http://www.learn2crack.com/wp-content/uploads/2014/04/node-cover-720x340.png";
URL URL=新URL(URL);
位图=BitmapFactory.decodeStream(urlurl.openConnection().getInputStream());
}捕获(例外e){
e、 printStackTrace();
}
返回位图;
}
受保护的void onPostExecute(位图图像){
如果(图像!=null){
设置图像位图(图像);
}否则{
Toast.makeText(activity.getApplicationContext(),“图像不存在或网络错误”,Toast.LENGTH_SHORT).show();
}
}
}
XML
正如您在logcat stacktrace中看到的,您有一个主线程上的网络异常,因为您正在“主”线程上执行网络任务,该线程也称为gui线程。您需要为此使用AsyncTask
private class DownloadImageTask extends AsyncTask<Object, Void, Bitmap> {
@Override
protected Bitmap doInBackground(Object... args) {
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
return bmp;
}
@Override
protected void onPostExecute(Bitmap result) {
//here do stuff with your bitmap data, also here you can interact with the gui
}
}
私有类下载ImageTask扩展异步任务{
@凌驾
受保护位图doInBackground(对象…参数){
位图bmp=BitmapFactory.decodeStream(url.openConnection().getInputStream());
返回bmp;
}
@凌驾
受保护的void onPostExecute(位图结果){
//在这里处理位图数据,也可以与gui交互
}
}
我还建议使用图像下载库从web下载图像。他们让下载图片变得非常容易,你不必担心太多的细节
private class DownloadImageTask extends AsyncTask<Object, Void, Bitmap> {
@Override
protected Bitmap doInBackground(Object... args) {
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
return bmp;
}
@Override
protected void onPostExecute(Bitmap result) {
//here do stuff with your bitmap data, also here you can interact with the gui
}
}