【问题标题】:recyclerView fragment image not display using firebaserecyclerView 片段图像不使用firebase显示
【发布时间】:2019-12-18 18:42:58
【问题描述】:

如果我删除 Glide 图像代码,图像不会加载到片段中,它运行良好 但添加图像运行时出错

我认为由于片段而出现错误,但我不明白它是什么

  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);
}   

这是错误:

 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)

任何帮助表示赞赏 谢谢你

【问题讨论】:

  • 你能分享完整的代码吗?上下文初始化在哪里?

标签: android firebase firebase-realtime-database firebaseui


【解决方案1】:

您可以在日志中看到您的活动或上下文为空。 如果您想知道为什么您的活动越来越空,那么您可以按照这个答案。 https://stackoverflow.com/a/43748449/8588259

然后您可以按照以下步骤操作, 1) 在你的片段中写 onAttach(Activity activity)

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

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

2) 在你的适配器中传递这个活动

  val adapter = MyAdapter(activity)

3) 现在你可以编写滑行代码了

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

【讨论】:

    【解决方案2】:

    试试这个

    在附加 Fragment 之前或在 Fragment 被销毁之后调用 getActivity() 时会出现此问题。

    所以检查 getActivity() !=null 并绑定你的图像视图

        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);
        }
    

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 2017-01-22
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多