2014-07-17 54 views
0

在互聯網上嘗試了很多方法,但我的imageView仍然顯示圖像的空白。 希望從URL檢索圖像(下載或參考它),但似乎我錯過了一些東西。 我已激活清單中的INTERNET權限。Android:ImageView從URL加載

icon.setImageResource(R.drawable.portrait_user); 

     try { 
      URL url = new URL("https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xpf1/t1.0-1/c0.0.50.50/p50x50/1499583_10202305028778787_1063740680_n.jpg"); 
      InputStream content = (InputStream)url.getContent(); 
      Bitmap d = BitmapFactory.decodeStream(content); 
      icon.setImageBitmap(d); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+1

爲什麼重新發明車輪而不是使用衆多現有的更好的解決方案之一? –

回答

0

在主應用程序線程上執行網絡I/O會導致您的應用程序在Android 4.0+上崩潰。

最有可能的是,您可以更好地使用第三方庫,可以在後臺爲您下載圖像,並在準備就緒時更新ImageViewPicassoUniversal Image Loader是這兩個更受歡迎的庫。

+0

我只需要加載一個圖像,以爲我可以使用Android代碼。 –

+1

@shoujo_sm:當然歡迎您設置自己的'AsyncTask',在'doInBackground()'中執行下載和'BitmapFactory'工作,並將'ImageView'填充到'onPostExecute()'中。這也有問題,例如處理配置更改。除此之外,我建議使用'Log.e()'而不是'printStackTrace()'來確保日誌被寫出到LogCat中,以便您可以看到它們。 – CommonsWare

+0

該代碼可能在任何地方看起來不像主線程。如果它在主線程中,它將以主線程上的事件開始,現在不會。 – danny117