2012-01-16 135 views
0

我遇到問題。當應用程序從網上加載圖像時,它應該顯示出來,但在Android 4.0上不顯示。它適用於android 2.2。圖像不會顯示在Android 4.0上

這是代碼。

public class Main extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ImageView imgView =(ImageView)findViewById(R.id.imview); 
     Drawable drawable = LoadImageFromWeb("http://alphaapplication.com/liveshit/free/tour_dates/images/ad.png"); 
     imgView.setImageDrawable(drawable); 
    } 

    public void ad (View view) { 
     ad("https://market.android.com/search?q=pub%3A%22Alpha%20Application%22"); 
    } 

    private void ad (String url) { 
     Uri uriUrl = Uri.parse(url); 
     Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl); 
     startActivity(launchBrowser); 
    } 

    private Drawable LoadImageFromWeb(String url) { 
     try { 
      InputStream is = (InputStream) new URL(url).getContent(); 
      Drawable d = Drawable.createFromStream(is, "src name"); 
      return d; 
     } catch (Exception e) { 
      System.out.println("Exc="+e); 
      return null; 
     } 
    } 
} 

回答

2

從Honeycomb 3.X.X開始,您不能再從主UI線程訪問網絡。這就是你剛纔提供的代碼片段中所做的。現在,您需要將所有網絡訪問移動到後臺線程。最簡單的方法是使用AsyncTask。我已將您與開發人員指南聯繫起來,該指南可讓您輕鬆轉換代碼。

http://developer.android.com/resources/articles/painless-threading.html

只是爲了驗證,你應該看看在logcat中,你的應用程序很可能已經悄然泛起了NetworkOnMainThreadException,但它不足以引起你的應用程序炸燬,因爲它的信息;不是系統停止。

讓我知道是否適合你,要不然查找例外logcat中被拋出,在這裏回覆

DSC

+0

你得到了什麼例外?正如pro蜂在蜂巢之後所說的那樣,如果您要進行網絡操作,您需要使用asynctask或處理程序。 – 2012-01-16 18:20:28

1

pr0methium是正確的。 http://developer.aiwgame.com/imageview-show-image-from-url-on-android-4-0.html

....... //顯示出圖像 新DownloadImageTask((ImageView的)findViewById(R.id.imageView1)) .execute(「http://java.sogeti.nl/ JavaBlog /可溼性粉劑內容/上傳/ 2009/04/android_icon_256.png「); }

public void onClick(View v) { 
    startActivity(new Intent(this, IndexActivity.class)); 
    finish(); 

} 

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
}