2014-11-06 4 views
9

내 프로젝트에서 Picasso 라이브러리를 사용하여 이미지를 설정하려고합니다.Picasso IllegalArgumentException 대상이 null이 아니어야합니다.

뷰의 이미지를 클릭하면 Picasso 실행에 오류가 발생합니다. UnfoldableDetailsFragment 응용 프로그램

java.lang.IllegalArgumentException: Target must not be null. 
      at com.squareup.picasso.RequestCreator.into(RequestCreator.java:340) 
      at com.squareup.picasso.RequestCreator.into(RequestCreator.java:326) 
      at com.zafer.celaloglu.FragmentsandActivities.UnfoldableDetailsFragment.openDetails(UnfoldableDetailsFragment.java:89) 
      at com.zafer.celaloglu.model.PaintingsAdapter.onClick(PaintingsAdapter.java:52) 
      at android.view.View.performClick(View.java:4084) 
      at android.view.View$PerformClick.run(View.java:16966) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4745) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
      at dalvik.system.NativeStart.main(Native Method) 

로그 캣 89 =

public void openDetails(View coverView, Painting painting) { 
    ImageView image = (ImageView) coverView.findViewById(R.id.details_image); 
    TextView title = (TextView) coverView.findViewById(R.id.details_title); 
    TextView description = (TextView) coverView.findViewById(R.id.details_text); 

    Picasso.with(getActivity()).load(painting.getImageId()).into(image); ->89. LINE 
    Log.i("bilgi", "basildi"); 

    title.setText(painting.getTitle()); 

    SpannableBuilder builder = new SpannableBuilder(getActivity()); 
    builder 
      .createStyle().setFont(Typeface.DEFAULT_BOLD).apply() 
      .append(R.string.year).append(": ") 
      .clearStyle() 
      .append(painting.getYear()).append("\n") 
      .createStyle().setFont(Typeface.DEFAULT_BOLD).apply() 
      .append(R.string.location).append(": ") 
      .clearStyle() 
      .append(painting.getLocation()); 
    description.setText(builder.build()); 

    mUnfoldableView.unfold(coverView, mDetailsLayout); 
} 

PaintingAdapter :

public class PaintingsAdapter extends ItemsAdapter<Painting> implements View.OnClickListener { 

public PaintingsAdapter(Context context) { 
    super(context); 
    setItemsList(Arrays.asList(Painting.getAllPaintings(context.getResources()))); 
} 

@Override 
protected View createView(Painting item, int pos, ViewGroup parent, LayoutInflater inflater) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); 
    ViewHolder vh = new ViewHolder(); 
    vh.image = Views.find(view, R.id.list_item_image); 
    vh.image.setOnClickListener(this); 
    vh.title = Views.find(view, R.id.list_item_title); 
    view.setTag(vh); 

    return view; 
} 

@Override 
protected void bindView(Painting item, int pos, View convertView) { 
    ViewHolder vh = (ViewHolder) convertView.getTag(); 

    vh.image.setTag(item); 
    Picasso.with(convertView.getContext()).load(item.getImageId()).noFade().into(vh.image); 
    vh.title.setText(item.getTitle()); 
} 

@Override 
public void onClick(View view) { 
    //Log.i("bilgi", "basildi"); 
    UnfoldableDetailsFragment fm = new UnfoldableDetailsFragment(); 
    fm.openDetails(view, (Painting)view.getTag()); -->HERE IS 52. line 
    Log.i("bilgi", "basildi"); 

} 

private static class ViewHolder { 
    ImageView image; 
    TextView title; 
} 

}

답변

27

imageinto에게 전달 된 대상입니다. 그것은 null입니다.

레이아웃 ID가 모든 구성에 대해 올바른지 확인하고 @+id/details_image을 지정하십시오.

+0

yeap image는 null을 반환하지만 모든 구성이 정확합니다. –

+0

훌륭한 작업을 계속하십시오. – VVB

0

어쩌면 painting.getImageId()가 공백 또는 null?

이미지 또는 getActivity()? :)

+0

원래 구현 나는 그것이 단편 변환 활동에 있던 list_item_categories했다

@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(context) .inflate(R.layout.list_item_subcategories, parent, false); 

너무 나는에서 어댑터의 onclick 방법에 약간의 변경@Override 공개 무효 onClick (보기보기) { if (view.getContext (instanceof UnfoldableDetailsActivity) { UnfoldableDetailsActivity activity = (UnfoldableDetailsActivity) view.getContext(); activity.openDetails (보기, (그림) view.getTag()); } } –

0

나는 이것이 조금 오래되었다는 것을 알고 있지만, 방금 시간을 보냈던 한 가지는 이미지가있는 레이아웃에 "setContentView"를 실행하는 것을 잊어 버리는 것입니다.

이미지 뷰 그것이 살아 메인 레이아웃이 팽창 될 때까지 널 (null)이 될 것입니다

)

3

수 있도록 당신은 내가 이미 존재하는 어댑터를 복사하고 변경하는 것을 잊었다 때문에 내 문제였다 올바른 XML 을 팽창 확인 내가 했어야 레이아웃이

관련 문제