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

Fragment中Firestore数据展示到RecyclerView报Post无无参构造错误如何解决

错误产生原因

Firebase Firestore在将数据库数据反序列化为本地类对象时,要求目标类必须存在可访问的无参数构造方法,用于先实例化空对象,再逐一对应赋值数据库字段。
你当前定义的Post数据类中,createdAt字段未设置默认值,导致Kotlin不会自动生成无参构造方法,Firebase无法实例化Post对象,因此抛出该异常。

修复方案

方案一(推荐):给所有字段添加默认值

给Post类中未设置默认值的createdAt字段添加默认值,Kotlin会自动生成符合要求的无参构造方法:

data class Post (
    val descrription: String = "",
    val createdBy: User = User(),
    val currentTime:String = "",
    val currentDate:String = "",
    val createdAt:Long = 0L 
)

注意:依赖的User类也需要保证所有字段都有默认值,否则会触发相同类型的反序列化错误。

方案二:手动添加无参次级构造方法

如果你不想修改原有字段的定义,可以手动添加无参次级构造方法,统一填充默认值:

data class Post (
    val descrription: String,
    val createdBy: User,
    val currentTime:String,
    val currentDate:String,
    val createdAt:Long 
) {
    // 手动定义无参构造方法
    constructor() : this("", User(), "", "", 0L)
}

额外混淆配置

如果你开启了ProGuard/R8代码混淆,需要在proguard-rules.pro文件中添加规则,避免模型类和构造方法被混淆移除:

-keep class models.Post { *; }
-keep class models.User { *; }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:57:00