2014-09-09 13 views
32

Sto cercando di utilizzare la libreria picasso per caricare l'archivio di immagini nel media store. Quando ho chiamato load (imageview, callback), la chiamata picasso onFail invece di onSuccess. Come faccio a sapere perché l'immagine non è stata caricata correttamente?Android: immagine di caricamento di Picasso non riuscita. come mostrare il messaggio di errore

+1

Avere uno sguardo a questa domanda ha risposto [Picasso Biblioteca, Android: Usando errore Listener] [1] [1]: http://stackoverflow.com/questions/17052538/pi casso-library-android-using-error-listener –

risposta

119

Uso costruttore:

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

Funziona alla grande, grazie! –

9

Quando si utilizza callback, il picaso chiamerà metodo onSuccess e 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

come ottenere la causa di impossibilità di caricare l'immagine in 'onError'? – Raptor

+0

Il metodo onError non offre informazioni sull'errore. Ti aiuta solo a capire che si sta verificando un errore mostrando "mErrorImage" –

+0

Questo è quello che so anch'io. Al suo posto dovrebbe essere usato l'ascoltatore globale. – Raptor

1

Hai aggiunto il permesso Internet in Manifest? Con la risposta di Kevin here, vedere il registro delle eccezioni e pubblicare l'eccezione qui.

+0

Questo dovrebbe essere un commento. –

1

Nel caso in cui si desidera utilizzare Picasso con Kotlin ed espressione lambda potrebbe essere il più breve questa:

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

... e poi si può caricare l'immagine come al solito:

picasso.load(url).into(imageView) 
Problemi correlati