如何序列化Firebase数据库的User类并修复此错误? [英] How can I serialize my User class for the Firebase Database and fix this error?
本文介绍了如何序列化Firebase数据库的User类并修复此错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试从Firebase数据库的dataSnapshot中检索更新的用户:
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());
}
$ b $ @Override
public void onCancelled(DatabaseError databaseError){
$ b}
});
$ / code>
但是我在下面得到这个错误:
com.google.firebase.database.DatabaseException:类bqs.bomqueso.Model.User缺少一个没有参数的构造函数
在com.google.android .gms.internal.zzbtg $ zza.zze(未知来源)
在com.google.android.gms.internal.zzbtg $ zza.zzaH(未知来源)
在com.google.android.gms .internal.zzbtg.zze(未知来源)
在com.google.android.gms.internal.zzbtg.zzb(未知来源)
来自com.google.android.gms.internal.zzbtg.zza (未知来源)
,位于com.google.firebase.database.DataSnapshot.getValue(未知来源)
在bqs.bomqueso.Activities.MainActivity $ 3.onDataChange(MainActivity.java:92)
在com.google.android.gms.internal.zzbpx.zza(未知来源)
在com.google.android .gms.internal.zzbqx.zzZS(未知来源)
在com.google.android.gms.internal.zzbra $ 1.run(未知来源)
在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 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:618)
这里我的User类(这不是子类,我创建它在一个单独的文件):
public class User {
private String firstName ;
private String lastName;
private String profileId;
public User(){}
$ b $ public User(String fName,String lName,String id){
this.firstName = fName;
this.lastName = lName;
this.profileId = id;
}
public String getProfileId(){
return profileId;
$ b $ 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;
$ / code $ / pre
我在这里找到类似的问题,但是我没有找到了我的问题的解决方案,希望你们能帮助我,提前谢谢! 解决方案
参数作为
public User(){} as cricket mentioned and serialize
public class User实现Serializable {
private String firstName;
private String lastName;
private String profileId;
$ b $ public User(){
}
public User(String fName,String lName,String id){
this.firstName = fName;
this.lastName = lName;
this.profileId = id;
public String getProfileId(){
return profileId;
$ b $ 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;
code
$ b $ p
$ b 如果这不符合要求记下来的话
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)
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!
解决方案 Create a constructor with no arguments as
public User() { } as cricket mentioned and to serialize
public class User implements Serializable {
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;
}
}
If this didn't meet requirement note down
这篇关于如何序列化Firebase数据库的User类并修复此错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文