Изображение не будет отображаться на Android 4.0 - PullRequest
0 голосов
/ 16 января 2012

У меня проблема.Когда приложение загрузило изображение из Интернета, оно должно появиться, но в Android 4.0 оно не отображается.Работает на андроиде 2.2.

Вот код.

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 ]

2 голосов
/ 16 января 2012

Начиная с Honeycomb, 3.X.X, вы больше не можете получить доступ к сети из основного потока пользовательского интерфейса. Это то, что вы делаете в приведенном вами фрагменте кода. Теперь вам нужно перенести все сетевые доступы в фоновый поток. Самый простой способ сделать это - использовать AsyncTask. Я связал вас с руководством разработчика, которое должно облегчить переход вашего кода.

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

Просто для проверки вы должны заглянуть в logcat, и ваше приложение, вероятно, тихо выдало бы исключение NetworkOnMainThreadException, но этого недостаточно, чтобы приложение взорвалось, потому что оно информационное; не остановка системы.

Дайте мне знать, если это работает для вас, или найдите исключение, которое выдается в logcat, и ответьте здесь

1010 * DSC *

1 голос
/ 15 февраля 2012

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);
    }
}
...