Firebase没有要在课程中找到的序列化属性 [英] Firebase No properties to serialize found on class

查看:217
本文介绍了Firebase没有要在课程中找到的序列化属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很开心创建一个Firebase数据库。

我试图建立一个类的模型。一个非常简单的类:

  package com.glups.model; 

导入com.google.firebase.database.IgnoreExtraProperties;

@IgnoreExtraProperties
public class AlumnoFB {

private String nombre;
私人字符串apellidos;
私人字符串telefono;
私人字符串电子邮件;
私有布尔tieneWhatsapp;
私有布尔tieneTelegram;
私有布尔tieneHangouts;
private long formaPago;
private double ratioHora;
私人双重precioHora;
private Double horasCompensadas;

public AlumnoFB(){
//调用DataSnapshot.getValue(User.class)所需的默认构造函数
}

public AlumnoFB(String
字符串apellidos,
字符串telefono,
字符串电子邮件,
布尔tieneWhatsapp,
布尔tieneTelegram,
布尔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的示例类。 / p>

从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);

一个致命的异常会引发。

<$ p $ E / AndroidRuntime:致命例外:main
过程:com.glups.controlclases,PID:13841 com。 <> c $ c $ 06-10 10:17:37.179 13841-13841 / com.glups.controlclases google.firebase.database.DatabaseException:没有要在com.google.android.gms.internal.zzaix $ zza上的类com.glups.model.AlumnoFB
上找到序列化的属性。< init>(Unknown Source)
在com.google.android.gms.internal.zzaix.zzj(未知来源)
在com.google.android.gms.internal.zzaix.zzaw(未知来源)
在com。 google.android.gms.internal.zzaix.zzav(未知来源)
在com.google.firebase.database.DatabaseReference.zza(未知来源)
来自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)
在android.view.View $ PerformClick.run(View.java:19866)
在android.os.Handler .handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
在android.app.ActivityThread.main(ActivityThread.java:5258)$ b $在java.lang.reflect.Method.invoke(本地方法)$ b $在java.lang.reflect.Method.invoke(方法.java:372)
at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :698)

我已经检查过类型,并且都被接受。有什么不对?



将变量声明更改为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;


I'm bloqued creating a Firebase Database.

I'm trying to model a class. A very simple class:

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;
    }
}

that is almost like a sample class from Firebase.

Application user obtained from getUser() has been logged on Firebase.

When I call 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) ;

A fatal exception raises.

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.<init>(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)

I've checked types, and all are accepted. What's wrong?

解决方案

Firebase require your Pojo to have public variables or getter/setter.

Change variable declarations to 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;

这篇关于Firebase没有要在课程中找到的序列化属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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