You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用点击RecyclerView条目崩溃 空指针异常问题排查

崩溃根因

你在MainAdapter中声明了全局变量Context context,但从未对该变量进行赋值,点击条目执行Toast.makeText()和跳转逻辑时,调用的是值为null的context对象,触发空指针崩溃,和日志里的报错信息完全匹配。

修复方法

选任意一种即可:

  • 方法1:给全局context赋值
    修改适配器构造方法,新增Context入参完成赋值:

    public MainAdapter(@NonNull FirebaseRecyclerOptions<MainModel> options, Context context) {
        super(options);
        // 给全局context赋值
        this.context = context;
    }
    

    之后在Activity中初始化适配器时,传入当前页面的Context即可:

    // 替换成你自己托管RecyclerView的Activity类名
    MainAdapter adapter = new MainAdapter(options, MainActivity.this);
    
  • 方法2:直接从条目View获取Context(更推荐,无赋值遗漏风险)
    不需要依赖全局context变量,直接在点击事件里从被点击的View上取Context即可,还可以删掉你之前声明的全局Context context;变量:

    @Override
    public void onClick(View view) {
        int position = getAbsoluteAdapterPosition();
        // 从当前点击的View直接获取可用Context
        Context validContext = view.getContext();
        Toast.makeText(validContext, "position"+position, Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(validContext, TradingviewActivity.class);
        validContext.startActivity(intent);
    }
    
补充说明

如果后续你要给列表里的CircleImageView加载图片,同样可以通过holder.itemView.getContext()拿到合法的Context给Glide用,不需要额外持有全局Context,能避免很多内存泄漏或者空指针问题。

内容的提问来源于stack exchange,提问作者Chanuka Jayamal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:27:08