I am attempting to use Picasso to get three Bitmap images from a URL
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab2);
Drawable d1 = new BitmapDrawable(Picasso.with(Tab2.this).load(zestimateImg1).get());
}
I am getting FATAL EXCEPTION with this code. I suspect it has to do with the fact that this should be done within AsyncTask, but I can't get it to work. If using that is avoidable, I would like to do this without using AsyncTask.
How can I get this code to run without crashing?
If the best way to do this is with AsyncTask, then that solution is ok.
You cannot make synchronous requests in the main thread. If you dont want to use an AsyncThread then just use Picasso together with a Target.
Picasso.with(Tab2.this).load(zestimateImg1).into(new Target(...);
I recommend you save a reference to your target like so:
Target mTarget =new Target (...);
This is because Picasso uses weak references to them and they might be garbage collected before the process is finished.
None of above worked for me instead this
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable(){
@Override
public void run() {
Picasso.with(Context)
.load(imageUrl)
.into(imageView);
}
});
Hope it may be useful for someone
Just for the record:
Picasso.with(context).load(url).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Log.i(TAG, "The image was obtained correctly");
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
Log.e(TAG, "The image was not obtained");
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Log.(TAG, "Getting ready to get the image");
//Here you should place a loading gif in the ImageView
//while image is being obtained.
}
});
Source: http://square.github.io/picasso/
onPrepareLoad() is called always after starting the request.
from can be "DISK", "MEMORY" or "NETWORK" to indicate where was the image obtained from.
来源:https://stackoverflow.com/questions/27180765/picasso-java-lang-illegalstateexception-method-call-should-not-happen-from-the