0

Image is not load to the fragment if i remove the Glide image code it's run fine but adding image run with error

I think i get the error because of the fragment but i don't understand what is it

  public void onBindViewHolder(AuthorListAdapter.MyViewHolder holder, int position) {
    holder.name.setText(authorList.get(position).getName());
    Glide.with(context).load(authorList.get(position).getImageUrl()).into(holder.image);
}   

Here is the error:

 java.lang.NullPointerException: You cannot start a load on a not yet attached View or a  Fragment where getActivity() returns null (which usually occurs when getActivity() is called before the Fragment is attached or after the Fragment is destroyed).
  at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:27)
  at com.bumptech.glide.Glide.getRetriever(Glide.java:607)
  at com.bumptech.glide.Glide.with(Glide.java:638)
  at com.example.hardik.myapplication.AuthorListAdapter.onBindViewHolder(AuthorListAdapter.java:42)
  at com.example.hardik.myapplication.AuthorListAdapter.onBindViewHolder(AuthorListAdapter.java:22)
  at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6508)
  at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541)
  at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484)
  at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750)
  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5589)
  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5585)
  at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2231)
  at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:556)
  at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)
  at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:610)
  at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
  at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3719)
  at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3135)
  at android.view.View.measure(View.java:19759)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
  at android.view.View.measure(View.java:19759)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
  at android.view.View.measure(View.java:19759)
  at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:934)
  at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:973)
  at android.view.View.measure(View.java:19759)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
  at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:719)
  at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:91)
  at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1361)
  at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:789)
  at android.view.View.measure(View.java:19759)
  at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1060)
  at android.view.View.measure(View.java:19759)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
  at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
  at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
  at android.view.View.measure(View.java:19759)
  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
  at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
  at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
  at android.view.View.measure(View.java:19759)

Any help appreciated Thank You

Alex Mamo
  • 130,605
  • 17
  • 163
  • 193
Hardik Patel
  • 33
  • 1
  • 1
  • 5

2 Answers2

1

you can see in your log you get activity or context is null. If you want to know why your activity is getting empty, then you can follow this answer. https://stackoverflow.com/a/43748449/8588259

then you can follow these steps, 1) write onAttach(Activity activity) in your fragment

@Override
public void onAttach(Context context) {
    super.onAttach(context);

    if (context instanceof Activity){
        mActivity =(Activity) context;
    }
} 

2) pass this activity in your adapter

  val adapter = MyAdapter(activity)

3) now you can write glide code

  Glide.with(activity).load(imageUrl).into(view)    
0

Try this

The issue itself occurs when getActivity() is called before the Fragment is attached or after the Fragment is destroyed.

So check getActivity() !=null and bind your image view

    if( getActivity()!= null ){

      Glide.with(getActivity()).load(authorList.get(position).getImageUrl()).into(holde
           r.image);
    }


    if( getActivity() != null ){

      Glide.with(getActivity()).load(authorList.get(position).getImageUrl()).into(holde
           r.image);
    }
Ramesh sambu
  • 3,577
  • 2
  • 24
  • 39