イメージベースのストレージからピカソを使用して、MarkerからInfoWindowAdapterに配置されたイメージビューにイメージをロードしようとします。イメージをFirebaseストレージからピカソでInfowindowのイメージビューにロードすると、ピカソはプレースホルダのみを表示します
私はそれについて非常に切望しています。問題はPicassoがプレースホルダーアイコンのみを表示することです。
FirebaseStorageRefernce
のための私のコードは、このFirebase Blog postを参照する次のようになります。
StorageReference load = getImage(id);
load.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
downloadUri = uri;
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Failure",e.toString());
}
});
私が手downloadUriが有効で、正常に動作します。今私はPicasaのためにこのdownloadUriを使用します。私はStackOverflowの上ここで見つけるanswerを参照する
Picasso picasso = new Picasso.Builder(getApplicationContext()).listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception e) {
e.printStackTrace();
}
}).build();
picasso.setLoggingEnabled(true);
picasso.load(downloadUri).placeholder(R.drawable.toxic_bait_icon).fit().into(thump, new MarkerCallback(marker));
、私はMarkerCallbackクラスを作った:
public class MarkerCallback implements Callback {
com.google.android.gms.maps.model.Marker marker = null;
MarkerCallback(Marker marker)
{
this.marker = marker;
}
@Override
public void onError(){
Log.e(getClass().getSimpleName(), "Error loading thumbnail!");
}
@Override
public void onSuccess(){
Log.d("onSuccess","Picasso Callback");
if(marker != null && marker.isInfoWindowShown()){
Log.d("onSuccess","Picasso Callback in if");
marker.hideInfoWindow();
marker.showInfoWindow();
}
}}
あなたが、私はそれを呼び出している場合追跡するonSuccess
方法にいくつかのLog.d
のメッセージを追加したことがわかります。しかし、Log.d
メッセージがLogCatに表示されないため、いつでもonSucess
メソッドが呼び出されないようです。
また、Picassoでは、例外を設定しても例外、エラー、失敗、ログは表示されません。
picasso.setLoggingEnabled(true);
InfowindowのImageViewがプレースホルダを表示するということだけが起こります。
イメージサイズが大きすぎて読み込めないと思うかもしれませんが、ロードしようとするイメージは652.86 KBにすぎません。
PS:ピカソは、キャッシュ動作をデバッグするために左隅にリボンを表示しません。私は以下のもので活性化しようとします:
picasso.setIndicatorsEnabled(true);
私はピカソ2.5.2を使用します。 Picassoがログやリボンを表示しない場合、私が間違っていることやデバッグする方法がわかりません。私は誰かが私を助けることができるといいです私はこの機能がひどく必要です。
補足: また、このpostを参照して、アクセス許可をチェックしても問題ありません。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.READ_SYNC_SETTINGS"/>
<uses-permission
android:name="android.permission.WRITE_SYNC_SETTINGS"/>
<uses-permission
android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
更新
いくつかの試行錯誤の後、私はピカソのログを示していることが分かったが、私はlogcatでそれを見ることはありません。私の携帯電話を再起動した後、しばらくしてからlogcatのログが見えました。ログは再び消えますが、今回も再起動してもログは表示されません。
しかし、私もいくつかの調査をして、別のanswerが自分の問題を参照していることを発見しました。
私はコードを変更しましたが、それは役に立ちません。問題はまだ同じです。ピカソはプレースホルダのみを表示します。