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

Android Studio应用向Firebase发送数据时崩溃如何解决

报错日志如下:

java.lang.RuntimeException: Found conflicting getters for name getText on class androidx.appcompat.widget.AppCompatEditText
at com.google.firebase.firestore.util.CustomClassMapper$BeanMapper.(CustomClassMapper.java:629)
at com.google.firebase.firestore.util.CustomClassMapper.loadOrCreateBeanMapperForClass(CustomClassMapper.java:377)
at com.google.firebase.firestore.util.CustomClassMapper.serialize(CustomClassMapper.java:177)
at com.google.firebase.firestore.util.CustomClassMapper.serialize(CustomClassMapper.java:140)
at com.google.firebase.firestore.util.CustomClassMapper.serialize(CustomClassMapper.java:104)
at com.google.firebase.firestore.util.CustomClassMapper.convertToPlainJavaTypes(CustomClassMapper.java:78)
at com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData(UserDataReader.java:231)
at com.google.firebase.firestore.UserDataReader.parseSetData(UserDataReader.java:75)
at com.google.firebase.firestore.DocumentReference.set(DocumentReference.java:167)
at com.google.firebase.firestore.DocumentReference.set(DocumentReference.java:147)
at com.example.finalproject3.RegisterScreen$1$1.onComplete(RegisterScreen.java:82)
at com.google.android.gms.tasks.zzj.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
错误触发原因

Firebase Firestore在序列化待写入数据时,会自动扫描目标类的getter方法完成Java对象到JSON结构的转换。本次报错是因为你向set()方法传入的待存储对象中包含了androidx.appcompat.widget.AppCompatEditText控件实例:该控件本身存在多个签名不同的getText方法,Firebase的序列化映射器无法识别正确的调用方法,因此抛出getter冲突异常。
你可以定位到项目中RegisterScreen.java的第82行,此处就是调用Firestore写入数据的代码位置,你传入的对象错误携带了EditText控件实例而非控件的文本内容。

修复步骤
  • 提取控件的文本内容而非直接传入控件
    不要直接把EditText对象作为字段存入待上传的实体类,先调用如下方法拿到纯文本:
    String inputContent = yourEditText.getText().toString().trim();
    
    再将inputContent赋值给实体类对应的字符串字段。
  • 清理实体类的冗余字段
    检查你用于上传Firestore的实体类,不要将任何Android View类型作为成员变量声明。如果有特殊原因需要保留View字段,可以给该字段添加@Exclude注解,Firebase序列化时会自动跳过该字段:
    @Exclude
    private AppCompatEditText nameInput;
    
  • 验证写入逻辑
    修改完成后重新运行写入流程,确认不再携带控件实例即可解决崩溃问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:03