2017-10-13 2 views
3

Android 게임의 간단한 통계 활동을 만들려고합니다. 새로운 Firestore 데이터베이스를 사용하고 있습니다. 나는 총 점수, 최근 점수, 평균 점수, 총 게임 및 최고 점수로 Firestore 데이터베이스에 문서를 저장할 수 있었지만 데이터베이스에서 데이터를 다시 읽으려고하면 null을 반환합니다.정수 저장 및 읽기 Firestore Android

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

} 

그것은 잘 작동합니다. 미리 감사드립니다! 그것이 우리가 경우 FireStore에서 "번호"를 가져 오는로부터 무엇을 얻을 이후, 나는 우리가 정수로 걷고 캐스팅해야 거하고있는 conclussion에 도착 몇 가지 테스트를 수행 한 후

답변

4

. 캐스팅을 할


사용이 : 당신은 필드의 끝 부분에있는 "편집"아이콘을 클릭하여 "번호"를 저장
1]

가 있는지 확인 : 여기처럼 내 데이터가 어떻게 표시되는지를 보여줍니다 : Safely casting long to int in Java

내 코드는 다음과 같습니다

int money = snapshot.getLong("money").intValue(); 


추가 설명을 물어 주시기 바랍니다!

+0

나에게 잘 어울립니다. 필자는 필드가 제공되지 않을 때 NOT NULL 검사를 먼저 수행하도록 권장합니다. – Jozef