2014-09-09 7 views
32

Ich versuche, die Picasso-Bibliothek zu verwenden, um den Bildspeicher in den Mediastore zu laden. Wenn ich load (imageview, callback) anrufe, ruft der Picasso onFail statt onSuccess auf. Woher weiß ich, warum das Bild nicht erfolgreich geladen wurde?Android: Picasso laden Bild fehlgeschlagen. wie man Fehlermeldung zeigt

+1

Haben ein Blick auf diese beantworteten Frage [Picasso Bibliothek, Android: Fehler bei dem Verwenden von Hörern] [1] [1]: http://stackoverflow.com/questions/17052538/pi casso-library-android-using-error-listener –

Antwort

119

Verwenden Erbauer:

Picasso.Builder builder = new Picasso.Builder(this); 
    builder.listener(new Picasso.Listener() 
    { 
     @Override 
     public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) 
     { 
      exception.printStackTrace(); 
     } 
    }); 
    builder.build().load(URL).into(imageView); 
+0

Das funktioniert super, danke! –

9

Wenn Sie Rückruf verwenden, rufen die picaso Methode onSuccess und onError!

File fileImage = new File(mPathImage); 
     Picasso.with(mContext).load(fileImage) 
       .placeholder(R.drawable.draw_detailed_view_display) 
       .error(R.drawable.draw_detailed_view_display) 
       .resize(200, 200) 
       .into(holder.mImageEvidence, new Callback() { 
        @Override 
        public void onSuccess() { 
         holder.mMediaEvidencePb.setVisibility(View.GONE); 
        } 

        @Override 
        public void onError() { 
         holder.mErrorImage.setVisibility(View.VISIBLE); 
        } 
       }); 
+5

Wie bekomme ich die Ursache, das Image in 'onError' nicht laden zu können? – Raptor

+0

Methode onError bietet keine Informationen über den Fehler. Es hilft Ihnen nur zu erkennen, dass ein Fehler auftritt, indem Sie "mErrorImage" anzeigen. –

+0

Das weiß ich auch. Der globale Listener sollte stattdessen verwendet werden. – Raptor

1

Haben Sie die Internet-Berechtigung in Manifest hinzugefügt? Mit Kevins Antwort here, Bitte beachten Sie das Ausnahmeprotokoll und post die Ausnahme hier.

+0

Dies sollte ein Kommentar sein. –

1

Falls Sie Picasso mit Kotlin und Lambda-Ausdruck verwenden, da dies so kurz sein könnte:

val picasso = Picasso.Builder(context) 
      .listener { _, _, e -> e.printStackTrace() } 
      .build() 

... und dann können Sie Bild wie gewohnt laden:

picasso.load(url).into(imageView) 
Verwandte Themen