2016-08-06 34 views
0

Android java.lang.IllegalArgumentException: Pfad darf nicht leer sein. wie löst man? Ich versuche das Foto des Kontakts zu erhalten. Die Anwendung stürzt ständig ab. Ich weiß nicht, wie ich es lösen soll. Versucht Google, konnte diesen Fehler jedoch immer noch nicht beheben. Kontakte ohne Fotoeinstellung funktionieren einwandfrei. Nur die Kontakte mit den darauf eingestellten Fotos geben Fehler.Android java.lang.IllegalArgumentException: Der Pfad darf nicht leer sein

Code:

@Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     final Contact c = filtered_items.get(position); 
     holder.name.setText(c.name); 
     // if(c.photoUri.equals("")){ 
     if(c.photoUri == null && c!=null){ 
      holder.image.setImageResource(R.drawable.unknown_avatar); 
     }else{ 

      Picasso.with(ctx).load(c.photoUri) 
        .resize(100, 100) 
        .transform(new CircleTransform()) 
        .into(holder.image); 
     } 
     holder.lyt_parent.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       dialogAbout(c); 
      } 
     }); 

    } 

Log:

`FATAL EXCEPTION: main 
Process: com.example.apple.qs, PID: 32061 
java.lang.IllegalArgumentException: Path must not be empty. 
at com.squareup.picasso.Picasso.load(Picasso.java:181) 
at com.example.apple.qs.Activity.adapter.ContactListAdapter.onBindViewHolder(ContactListAdapter.java:92) 
at com.example.apple.qs.Activity.adapter.ContactListAdapter.onBindViewHolder(ContactListAdapter.java:31) 
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5471) 
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5504) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4741) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617) 
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1994) 
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1390) 
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353) 
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574) 
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028) 
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2906) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3283) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1695) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:122) 
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42) 
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1170) 
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:814) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1187) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1465) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702) 
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556) 
at android.widget.LinearLayout.onLayout(LinearLayout.java:1465) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
at android.view.View.layout(View.java:16672) 
at android.view.ViewGroup.layout(ViewGroup.java:5328) 
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2319) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2032) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1191) 
at android.view.ViewRootImpl$TraversalRun` 

Antwort

0

überprüfen Sie Ihren Weg null ist oder nicht, bevor passieren Picasso

if(c.photoUri != null && !c.photoUri.isEmpty()) 
{ 
Picasso.with(ctx).load(c.photoUri) 
       .resize(100, 100) 
       .transform(new CircleTransform()) 
       .into(holder.image); 
} 
0

Es ist seltsam, dass Picasso scheitern, auch wenn Sie verwenden .error(R.drawable.image). Um dieses Problem zu lösen, sollten Sie manuell für Zeichenfolge Leere überprüfen und einige Standard-Platzhalter setzen, wenn der Pfad für das Profilfoto leer ist:

if (c.photoUri != null && c.photoUri.isEmpty()) { 
    iview.setImageResource(R.drawable.placeholder); 
} else { 
    Picasso.with(this).load(c.photoUri) 
      .placeholder(R.drawable.avatar_gray) 
      .error(R.drawable.avatar_gray) 
      .into(holder.image); 
} 
0

Sicherstellen, dass die Bild-URL nicht empty.Especially ist, wenn sie von Feuerbasis verweisen.

if (user.getPhotoUrl().isEmpty()) { 
      Picasso.with(Profile.this).load(avata).placeholder(avata).into(profile); 
     } else {  Picasso.with(Profile.this).load(user.getPhotoUrl()).placeholder(avata).into(profile); 
      }