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

ListView适配器调用getTag()触发空指针,App启动即崩溃

问题根源与修复方案

你的NullPointerException问题出在**inflateRequires方法的返回值错误**,这直接导致getView方法拿到的是null视图,后续调用view.getTag()自然触发空指针异常。

具体错误点

看你的inflateRequires方法:

private View inflateRequires(View view){
    if (view == null){
        view = inflater.inflate(R.layout.view_beacon_info,null,false);
        view.setTag(new ViewHolder(view));
    }
    return null; // 这里是致命错误!
}

你在方法最后返回了null,而不是已经初始化好的view对象。不管view是否为null,这个方法都会返回null,导致getView里的convertView被赋值为null,随后传递给bind方法的view就是null,调用view.getTag()必然崩溃。

修复后的代码

只需要把inflateRequires方法的返回值改成view即可:

private View inflateRequires(View view){
    if (view == null){
        view = inflater.inflate(R.layout.view_beacon_info,null,false);
        view.setTag(new ViewHolder(view));
    }
    return view; // 返回初始化后的view
}

额外优化建议

  • 布局填充时,建议传入父容器parent并设置attachToRoot为false,这样可以继承父容器的布局参数:
    view = inflater.inflate(R.layout.view_beacon_info, parent, false);
    
  • 可以给ViewHolder的字段加上private修饰符,通过getter方法访问,符合封装原则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:15:29