加载图像视图时出现Android错误

加载图像视图时出现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

我正在尝试在imageview中加载图像,但它没有加载链接的任何图像。 链接中有图片,但我仍然有空白

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
        }
    }