我正在尝试为我的 Android 游戏创建一个简单的统计活动。我正在使用新的 Firestore 数据库。我已经能够将文档保存到我的 Firestore 数据库中,其中包含总分数、最近分数、平均分数、总游戏数和高分,但是当我尝试从数据库读回数据时,它返回 null。
public void readFromDB(){
statsDoc.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if(documentSnapshot.exists()){
UserData userdata = documentSnapshot.toObject(UserData.class);
}
}
我的用户数据类:
/* Copyright statement */
package com.squidstudios.android.balloonpopper.utils;
import com.google.firebase.database.IgnoreExtraProperties;
/**
* UserData.java
*
* This class represents a single user's data including username, email, number of points earned,
* a saved state of their progress towards earning a single point, and their password.
*/
@IgnoreExtraProperties
public class UserData {
public String email;
public int total_points;
public int avg_score;
public int high_score;
public int total_games;
public int prev_score;
public UserData() {
// Default constructor required for calls to DataSnapshot.getValue(UserData.class)
}
public int getTotal_games() {
return total_games;
}
public void setTotal_games(int total_games) {
this.total_games = total_games;
}
public int getTotal_points() {
return total_points;
}
public void setTotal_points(int total_points) {
this.total_points = total_points;
}
public int getAvg_score() {
return avg_score;
}
public void setAvg_score(int avg_score) {
this.avg_score = avg_score;
}
public int getHigh_score() {
return high_score;
}
public void setHigh_score(int high_score) {
this.high_score = high_score;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getPrev_score() {
return prev_score;
}
public void setPrev_score(int prev_score) {
this.prev_score = prev_score;
}
}
当我用字符串测试它时它工作正常,但由于某种原因整数不起作用。提前致谢!
After doing some tests I got to the conclussion we're gonna have to cast Longs to Integers, since that's what we get from fetching a "Number" from firestore.
Here's what my data looks like:
Make sure you stored a "Number" by clicking on the "edit" icon at the end of the field:
Use this to do the casting: Safely casting long to int in Java https://stackoverflow.com/questions/1590831/safely-casting-long-to-int-in-java
My code looks like this:
int money = snapshot.getLong("money").intValue();
请随时询问进一步的解释!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)