2017-04-16 5 views
0

Meine App geben die folgenden Fehler: com.google.firebase.database.DatabaseException: Fehler Werte vom Typ java.lang.Long in String konvertierenFirebase Datenbank getValue Ausgabe

Dieser Fehler in dem am auftritt Leitung: MGame = dataSnapshot.getValue (Game.class) Hier ist mein Code: enter image description here

:

//create datarefence of only 1 game namely the current game 
    specificGameRef =mDatabase.child("games").child(-KhmBnF9vTLJSgNBcPqE); 
    specificGameRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      mGame =dataSnapshot.getValue(Game.class); 

     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // Getting Post failed, log a message 
      Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); 
      // ... 
     } 
    }); 

Hier mein json Code aus der Feuerbasis Datenbank

Wenn jemand mir helfen könnte, meinen Fehler zu finden, danke.

EDIT: Spielklasse:

public class Game { 
//firebase 
private FirebaseAuth mAuth; 
private FirebaseAuth.AuthStateListener mAuthListener; 
private DatabaseReference mDatabase; 

FirebaseUser user; 
User mUser; 
private String creatorName; 
private String key; 
private int day; 
private int month; 
private int year; 
private int clockHours; 
private int clockMinutes; 
private int durationMin; 
private int durationMax; 
private String creatorId; 


public Game() //An empty constructor for datastorage of Firebase 
{ 

} 

public Game(String creatorId) { 


    this.creatorId = creatorId; 
    key = getKey(); 
    day = getDay(); 
    month = getMonth(); 
    year = getYear(); 
    clockHours = getClockHours(); 
    clockMinutes = getClockMinutes(); 
    durationMin = getDurationMin(); 
    durationMax = getDurationMax(); 

}

EDIT: Benutzerklasse

public class User { 
//firebase authentification system 
private FirebaseAuth mAuth; 
private FirebaseAuth.AuthStateListener mAuthListener; 
private DatabaseReference mDatabase; 

String userId; 
String mUsername; 
String email; 
int age; 
int stars; 
int badReputation; 
String gender; 
int birthYear; 
int birthMonth; 
int birthDay; 

public User() 
{ 

} 

public User(String userId,String mUsername,String email) { 

    mDatabase = FirebaseDatabase.getInstance().getReference(); 

    this.userId = userId; 
    this.mUsername = mUsername; 
    age = getAge(); 
    stars = 0; 
    this.email=email; 
    badReputation = 0; 
    gender = ""; 
} 

Hinzu kommt, dass, ich habe diese andere Klasse, wo ein dataSnapshot. getValue einer Benutzerklasse. Und es funktioniert perfekt, was ist damit los ?? Hier ist der Code:

public void retrieveUser() 
{ 
    //create datarefence of only 1 user namely the current user 
    DatabaseReference specificCreatorRef =mDatabase.child("users").child(user.getUid()); 
    specificCreatorRef.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      //Now retrieving the current user and putting it in object mUser 
      mUser = dataSnapshot.getValue(User.class); 
      Log.w(TAGESS, "Print STARS of current mUSer: " + mUser.getStars()); 
      creatorGender =mUser.getGender(); 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      // Getting Post failed, log a message 
      Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); 
      // ... 
     } 
    }); 
} 

Also der letzte Code funktioniert perfekt, also warum funktionierts und nicht die DataSnapshot.getValue (Game.class)? Danke!

+0

Datentyp in Spielmodellklasse kann von dem Wert, den Sie von dataSnapshot bekam verschiedene de, überprüfen Sie bitte einmal oder geben Sie Ihre Modellklasse – Priya

+0

Was meinen Sie durch den Datentyp Spielklasse? Ich werde es dem Beitrag hinzufügen. – myName

+0

Und die Benutzerklasse? –

Antwort

0

Danke für die Hilfe, aber nach 3 Tagen kämpfen, fand ich die Zeile, die den Fehler gab. Ich weiß immer noch nicht warum.

In der Spielklasse hatte ich einige Getter und Setter, als der Setzer von ClockHours durch Code ersetzt wurde, der Integer.parsInt nicht verwendet hat, hat es funktioniert ....!

public void setClockHours(String clockHours){ 

    this.clockHours = Integer.parseInt(clockHours); 
} 

Danke trotzdem für Ihre Zeit