我在尝试从 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。
最佳答案
要解决您的问题,请使用以下步骤。
将模型类中的所有文件从
public static
更改为private
。private boolean onlineStatus; private int userAge; private String userGender; private String userId; private String userName;
将模型类中的所有 setter 和 getter 从
public static
更改为仅public
。
关于java - Firebase:没有要序列化的属性 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754272/