And*_*ves 4 android firebase firebase-realtime-database
我正在尝试从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());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
这是我的User类(这不是一个子类,我在一个单独的文件中创建它):
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里发现了类似的问题,但我没有找到解决问题的方法,希望你们能帮助我,提前谢谢你们!
Kis*_*nki 11
对于Kotlin,如果你使用下面的数据类作为firebase,
data class UserModel(
var UserName: String,
var UserType: Int
)
Run Code Online (Sandbox Code Playgroud)
然后你会得到一个错误
com.google.firebase.database.DatabaseException:UserModel未定义无参数构造函数.如果您使用的是ProGuard,请确保不剥离这些构造函数.
因此,您需要初始化其值.
data class UserModel(
var UserName: String = "",
var UserType: Int = 0
)
Run Code Online (Sandbox Code Playgroud)
创建一个不带参数的构造函数
public User() { } 正如板球提到的并序列化
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;
}
Run Code Online (Sandbox Code Playgroud)
}
如果这不符合要求,请记下
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |