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

Android开发中调用listener.onDataClick抛空指针异常该如何修复?

问题定位

根据崩溃日志可以直接定位到空指针触发点是listener.onDataClick()调用处,说明此时listener实例为null,顺着实例传递链路排查即可:

  • 首先确认Adapter构造方法中已经正确将传入的listener参数赋值给全局变量,你的代码中这一步逻辑正确
  • 进一步排查Adapter初始化时传入的参数,发现Fragment中声明的OnDataClickListener p仅做了变量声明、没有赋值,默认值为null,你将空值的p传入Adapter,直接导致后续调用时报错。
修复方案

核心修复

你的HttpFragment已经实现了OnDataClickListener接口,不需要额外声明p变量,初始化Adapter时直接传入当前Fragment实例即可:
将Fragment中创建Adapter的代码:

WifiShareAdapter appsAdapter = new WifiShareAdapter(this.getContext(), appu,p);

修改为:

WifiShareAdapter appsAdapter = new WifiShareAdapter(this.getContext(), appu, this);

同时可以删除无用的OnDataClickListener p;声明,避免后续误操作。

健壮性优化(推荐)

在Adapter调用listener的位置增加非空判断,避免后续其他场景误传空值时触发崩溃:

public void onBindViewHolder(@NonNull AppViewHolder holder, int position) {
    if (listener != null) {
        listener.onDataClick(apps.get(position),true);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:36:01