2012-01-16 27 views
0

問題があります。アプリがウェブから画像を読み込んだときに表示されるはずですが、Android 4.0では表示されません。それはアンドロイド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

例外はありますか?プロメチウムがハニカムの後に言ったように、あなたはネットワーク操作を行うならasynctaskかハンドラを使う必要があります。 –

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/wp-content/uploads/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); 
    } 
} 
関連する問題