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

Android空指针异常求助:在空对象上调用String.equals()方法

Android应用启动崩溃:NullPointerException分析与解决

先看核心报错信息,崩溃发生在Home Activity启动时,根源是LayoutInflater解析布局时触发了空指针:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.logo.tm.androidriderapp, PID: 5587
java.lang.RuntimeException: 无法启动Activity ComponentInfo{com.logo.tm.androidriderapp/com.logo.tm.androidriderapp.Home}: java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法'boolean java.lang.String.equals(java.lang.Object)'
...
Caused by: java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法'boolean java.lang.String.equals(java.lang.Object)'
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:715)
...
at com.logo.tm.androidriderapp.Home.onCreate(Home.java:31)

崩溃原因分析

从报错栈能明确看到,崩溃发生在Home.onCreate的第31行setContentView(R.layout.activity_home);,也就是解析布局文件的时候,不是Java代码逻辑的问题。具体是LayoutInflater在处理View的标签(tag)或者自定义View时,遇到了空对象,调用equals()方法触发了空指针。

常见的几个可能:

  • 布局文件activity_home.xml中某个View的android:tag属性为空字符串,或者引用了不存在的字符串资源(比如@string/xxx但strings.xml里没定义这个xxx)
  • 布局里使用了自定义View,但全类名写错了(比如漏了包名),导致系统找不到该类,解析时产生空值触发equals调用
  • 布局中的<include>标签引用了不存在的布局文件,或者被include的布局本身存在上述tag/自定义View问题

解决方法

咱们按优先级一步步排查:

  1. 检查布局中的tag属性:打开activity_home.xml,搜索所有带有android:tag的View,确保每个tag都有有效取值,既不是空串,也不是无效的资源引用
  2. 排查自定义View:如果布局里用了自定义View(比如非Android原生的View),检查其全类名是否正确,比如com.example.MyCustomView这种格式有没有写错,同时确认对应的类已经存在于项目中
  3. 检查include标签:如果布局里有<include>,确认引用的布局文件路径正确(比如@layout/included_layout这个布局确实存在),并且被include的布局本身没有上述问题
  4. 逐步定位问题View:如果上面的方法都没找到,可以尝试逐步注释布局中的部分View或布局块,每次注释后重新运行App,直到崩溃消失,这样就能定位到具体是哪个View导致的问题

内容的提问来源于stack exchange,提问作者mid rads38 s38

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:21:07