如何序列化 Firebase 数据库的 User 类并修复此错误? [英] How can I serialize my User class for the Firebase Database and fix this error?

查看:15
本文介绍了如何序列化 Firebase 数据库的 User 类并修复此错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 Firebase 数据库的 dataSnapshot 中检索更新的用户:

I'm trying to retrieve the updated User from the dataSnapshot of the Firebase Database:

mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            User atualizedUser = dataSnapshot.getValue(User.class);
            fName.setText(atualizedUser.getFirstName());
            lName.setText(atualizedUser.getLastName());
            profilePhoto.setProfileId(atualizedUser.getProfileId());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

但我在下面收到此错误:

But I get this error below:

com.google.firebase.database.DatabaseException: Class bqs.bomqueso.Model.User is missing a constructor with no arguments
                                                            at com.google.android.gms.internal.zzbtg$zza.zze(Unknown Source)
                                                            at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source)
                                                            at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                            at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                            at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                            at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                            at bqs.bomqueso.Activities.MainActivity$3.onDataChange(MainActivity.java:92)
                                                            at com.google.android.gms.internal.zzbpx.zza(Unknown Source)
                                                            at com.google.android.gms.internal.zzbqx.zzZS(Unknown Source)
                                                            at com.google.android.gms.internal.zzbra$1.run(Unknown Source)
                                                            at android.os.Handler.handleCallback(Handler.java:746)
                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                            at android.os.Looper.loop(Looper.java:148)
                                                            at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                            at     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

这里是我的 User 类(这不是子类,我在单独的文件中创建了它):

Here my User class (this is not a subclass, I created it in a separate file):

public class User {

private String firstName;
private String lastName;
private String profileId;

public User() { }

    public User(String fName, String lName, String id) {
        this.firstName = fName;
        this.lastName = lName;
        this.profileId = id;
    }

    public String getProfileId() {
        return profileId;
    }

    public void setProfileId(String id) { 
        this.profileId = id; 
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lName) { 
        this.lastName = lName; 
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String fName) { 
        this.firstName = fName; 
    }
}

我在这里找到了类似的问题,但我还没有找到解决我的问题的方法,希望你们能帮助我,在此先感谢您!

I find similar questions here, but I hadn't found a solution for my problem, I hope you guys can help me, Thank you in advance!

推荐答案

对于 Kotlin,如果您使用如下数据类作为 firebase,

For Kotlin, if you're using data class like below for firebase,

data class UserModel(
        var userName: String,
        var userType: Int
)

然后你会得到一个错误

com.google.firebase.database.DatabaseException:UserModel 没有定义一个无参数构造函数.如果您使用 ProGuard,请确保这些构造函数没有被剥离.

com.google.firebase.database.DatabaseException: UserModel does not define a no-argument constructor. If you are using ProGuard, make sure these constructors are not stripped.

为此,您只需要初始化它的值.

data class UserModel(
        var userName: String = "",
        var userType: Int = 0
)

这篇关于如何序列化 Firebase 数据库的 User 类并修复此错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆