java - Firebase:没有要序列化的属性 - Android

标签 java android firebase firebase-realtime-database

我在尝试从 Firebase 实时数据库读取和写入数据时遇到问题。我有一个注册和登录 Activity 。当我注册用户时,我想对他们进行身份验证并将用户的数据添加到数据库中。

这是我的用户类:

  public class myUser {

public static boolean onlineStatus;
public static int userAge;
public static String userGender;
public static String userId;
public static String userName;

public myUser() {

}
//Default constructor will have/set the default info for the users such as:
//(auto generated) id name, age, and gender initialised at creation time


public myUser(boolean onlineStatus, int userAge, String userGender, String userId, String userName ) {

    this.onlineStatus = onlineStatus;
    this.userAge = userAge;
    this.userGender = userGender;
    this.userId = userId;
    this.userName = userName;

}


//Getters
public static String getUserId() {
    return userId;
}

public static String getUserName() {
    return userName;
}

public static int getUserAge() {
    return userAge;
}

public static String getUserGender() {
    return userGender;
}

public static boolean getOnlineStatus() {
    return onlineStatus;
}

//Setters
public static void setOnlineStatusTrue() {
    onlineStatus = true;
}

public static void setOnlineStatusFalse() {
    onlineStatus = false;
}

}

现在,当我设置对我的 User 对象的数据库引用时,如下所示:

String id = databaseUsers.push().getKey();

myUser userRef = new myUser(onlineStatus, age, gender, id, name );

databaseUsers.setValue(userRef);

现在,当我在注册 Activity 中注册用户时,我的应用程序崩溃并收到以下错误:

没有要序列化的属性: ( https://puu.sh/A08NT.png

我还添加了一些 ProGuard 规则,但仍然遇到相同的错误。

-keepattributes Signature

-keepclassmembers class com.example.teamc.friendfinder.** {
  *;
}

我想做的就是注册一个用户,将他们添加到数据库中并将他们的在线状态设置为 False。然后,当用户登录时,我想将其设置为 True,以便我能够获取他们的在线状态 Activity 并更新 UI。

最佳答案

要解决您的问题,请使用以下步骤。

  1. 将模型类中的所有文件从 public static 更改为 private

    private boolean onlineStatus;
    private int userAge;
    private String userGender;
    private String userId;
    private String userName;
    
  2. 将模型类中的所有 setter 和 getter 从 public static 更改为仅 public

关于java - Firebase:没有要序列化的属性 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754272/

相关文章:

java - Applet JSObject javascript 调用是否序列化?

java - 用于测量相似性的 FFT 图像

java - Android Room 相对于 Cloud Firestore 在持久本地存储方面的优势是什么?

java - 从不同的 Activity 调用相同的方法

firebase - 使用flutter从Firebase的子集合中读取或检索数据列表

java - 实体字段集上的 Hibernate NullPointerException(更新)

java - 为什么设置两个字符串的值相同并使用==比较它们会返回true?

java - 是否可以在运行时可靠地检测哪个商店安装了 Android 应用程序(Google Play 或亚马逊市场)?

swift - 从 Firebase 获取多级节点

android - Play-Services-Map与Firebase之间的依赖冲突