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

Firebase Realtime Database推送数据时应用崩溃求助

解决Firebase Realtime Database的"Found conflicting getters for name: getdrugSubstance"错误

从你的堆栈报错信息可以直接定位核心问题:Firebase在解析MedicineUsageData类时,发现了针对drugSubstance字段的冲突getter方法。这是因为Firebase严格遵循JavaBean命名规范来映射实体类与数据库节点,一旦getter方法命名不符合规范,就会触发这个解析异常。

问题根源

你的实体类中字段名为drugSubstance,按照JavaBean规范,对应的getter方法应该是getDrugSubstance()(注意字段名的第二个字母大写,getter方法中首字母D也要大写)。但你大概率是手动编写/生成了错误的getter(比如getdrugSubstance(),首字母D小写),或者不小心同时存在两种不同命名的getter方法,导致Firebase无法确定使用哪一个。

解决方案

按照以下步骤逐一修复:

  1. 修正drugSubstance的getter/setter方法
    确保MedicineUsageData类中,drugSubstance对应的getter和setter严格遵循规范:

    public String getDrugSubstance() {
        return drugSubstance;
    }
    
    public void setDrugSubstance(String drugSubstance) {
        this.drugSubstance = drugSubstance;
    }
    

    绝对不能保留getdrugSubstance()这类不符合命名规则的方法。

  2. 用IDE自动生成getter/setter避免手动错误
    为了彻底杜绝命名失误,建议直接使用Android Studio的自动生成功能:

    • 右键点击MedicineUsageData类内部代码区域
    • 选择Generate -> Getter and Setter
    • 勾选所有需要生成方法的字段,点击OK即可生成完全符合规范的代码
  3. 清理并重建项目
    修复完成后,执行Build -> Clean Project,再执行Build -> Rebuild Project,确保所有编译缓存都被更新,避免旧代码残留影响运行。

验证

完成上述操作后,重新调用writeNewMedicineUsage方法,Firebase就能正确解析MedicineUsageData类,冲突getter的异常会消失,数据也能正常推送到数据库节点了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:52:36