Firebase:在类中找不到可序列化的属性。
Firebase:在类中找不到可序列化的属性。
我正在创建 Firebase 数据库时遇到了阻碍。
我试图建立一个非常简单的类:
package com.glups.model; import com.google.firebase.database.IgnoreExtraProperties; @IgnoreExtraProperties public class AlumnoFB { private String nombre; private String apellidos; private String telefono; private String email; private Boolean tieneWhatsapp; private Boolean tieneTelegram; private Boolean tieneHangouts; private Long formaPago; private Double ratioHora; private Double precioHora; private Double horasCompensadas; public AlumnoFB() { // Default constructor required for calls to DataSnapshot.getValue(User.class) } public AlumnoFB(String nombre, String apellidos, String telefono, String email, Boolean tieneWhatsapp, Boolean tieneTelegram, Boolean tieneHangouts, Long formaPago, Double ratioHora, Double precioHora, Double horasCompensadas) { this.nombre = nombre; this.apellidos = apellidos; this.telefono = telefono; this.email = email; this.tieneWhatsapp = tieneWhatsapp; this.tieneTelegram = tieneTelegram; this.tieneHangouts = tieneHangouts; this.formaPago = formaPago; this.ratioHora = ratioHora; this.precioHora = precioHora; this.horasCompensadas = horasCompensadas; } }
它几乎就像 Firebase 的一个示例类。
从 getUser() 获取到的应用程序用户已登录 Firebase。
当我调用 SetValue 时:
AlumnoFB alumno = new AlumnoFB("", "", "", "", false, false, false, ((Integer)FormaPago.INT_NO_PAGADO).longValue(), 0.0, 0.0, 0.0); mDatabase.child("AlumnoFB").child(ControlClasesFirebase.getUser().getUid()).setValue(alumno) ;
就会出现致命异常。
06-10 10:17:37.179 13841-13841/com.glups.controlclases E/AndroidRuntime: FATAL EXCEPTION: main Process: com.glups.controlclases, PID: 13841 com.google.firebase.database.DatabaseException: No properties to serialize found on class com.glups.model.AlumnoFB at com.google.android.gms.internal.zzaix$zza.(Unknown Source) at com.google.android.gms.internal.zzaix.zzj(Unknown Source) at com.google.android.gms.internal.zzaix.zzaw(Unknown Source) at com.google.android.gms.internal.zzaix.zzav(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) at com.glups.controlclases.MainActivity$4.onClick(MainActivity.java:305) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5258) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我检查了所有类型,所有类型都被接受。问题出在哪里?
admin 更改状态以发布 2023年5月22日
如果您正在使用proguard,由于配置的不同,模型中的某些方法可能会被剥离。正如我们所知,对于只有带有getter并且/或(可选)setter的字段的POJO,没有太多的优化,您可以使用注释“@Keep”,这样proguard将不会从此类中删除任何方法。
查看此处以获取更多信息:https://developer.android.com/studio/build/shrink-code.html
@Keep public class Store {}
Firebase要求您的 Pojo 具有 公共变量或getter/setter.
更改变量声明为public
public String nombre; public String apellidos; public String telefono; public String email; public Boolean tieneWhatsapp; public Boolean tieneTelegram; public Boolean tieneHangouts; public Long formaPago; public Double ratioHora; public Double precioHora; public Double horasCompensadas;