ピカソを使用してBitmap
から3つのURL
画像を取得しようとしています
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab2);
Drawable d1 = new BitmapDrawable(Picasso.with(Tab2.this).load(zestimateImg1).get());
}
FATAL EXCEPTION
このコードで。これはAsyncTask
内で実行する必要があるという事実に関係しているのではないかと思いますが、機能させることができません。それを使用することが避けられる場合、AsyncTask
を使用せずにこれを実行したいと思います。
クラッシュせずにこのコードを実行するにはどうすればよいですか?
これを行う最善の方法がAsyncTask
を使用する場合、その解決策は問題ありません。
メインスレッドで同期要求を行うことはできません。 AsyncThreadを使用したくない場合は、ターゲットと一緒にPicassoを使用してください。
Picasso.with(Tab2.this).load(zestimateImg1).into(new Target(...);
次のようにターゲットへの参照を保存することをお勧めします。
Target mTarget =new Target (...);
これは、ピカソがそれらへの弱い参照を使用しており、プロセスが完了する前にガベージコレクションされる可能性があるためです。
上記のどれも私のために働いた代わりにこれ
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable(){
@Override
public void run() {
Picasso.with(Context)
.load(imageUrl)
.into(imageView);
}
});
それが誰かのために役立つことを願っています
参考までに:
_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.
}
});
_
ソース: http://square.github.io/picasso/
onPrepareLoad()
は、リクエストの開始後に常に呼び出されます。 from
は、「DISK」、「MEMORY」、または「NETWORK」のいずれかで、イメージの取得元を示します。
これを試して:
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable(){
@Override
public void run() {
Picasso.with(Context)
.load(imageUrl)
.into(imageView);
}
});
これは同じです JuanJoséMeleroGómezの回答 とkotlin:
val imageBitmap = Picasso.get().load(post.path_image).into(object: Target {
override fun onPrepareLoad(placeHolderDrawable: Drawable?) {
Log.(TAG, "Getting ready to get the image");
//Here you should place a loading gif in the ImageView
//while image is being obtained.
}
override fun onBitmapFailed(e: Exception?, errorDrawable: Drawable?) {
Log.e(TAG, "The image was not obtained");
}
override fun onBitmapLoaded(bitmap: Bitmap?, from: Picasso.LoadedFrom?) {
Log.i(TAG, "The image was obtained correctly");
}
})