I have an url passed to an activity and I am trying to show the image from the url full screen, however it throws a main network thread exception.
From what I can find
It should be something like this.
In the doInBackground
you get the image, and in the onPostExecute
you set it
private class DownloadFilesTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... urls) {
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream((InputStream)new URL(urls[0]).getContent());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
ImageView i = (ImageView)findViewById(R.id.imgView);
i.setImageBitmap(bitmap);
}
}
Then, you call it inside your onCreate
method
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = getIntent().getStringExtra("SelectedImageURL");
new DownloadFilesTask ().execute(url);
}
Using Picasso after initializing yourImageView
with findViewById();
Picasso.with(context).load(url).into(yourImageView)
Put your network task inside doInBackground()
method of AsyncTask as follow:
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
try {
//ImageView i = (ImageView)findViewById(R.id.imgView);Put this line in onPreExecute() method
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(url).getContent());
// i.setImageBitmap(bitmap);//and this one on postExecute() method
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}