Firebase DatabaseException: impossible de convertir une valeur de type java.lang.Long de la Chaîne de
com.google.firebase.la base de données.DatabaseException: impossible de convertir
valeur de type java.lang.Long de la Chaîne de
est l'erreur que je reçois lorsque l'on suit les docs en essayant de récupérer des données d'un objet pour l'utiliser.
Voici mon modèle d'objet
public class User {
private String tour_director_key;
private String last_name;
private String location_latitude;
private String tour_id;
private String photo;
private String tour_director_name;
private String middle_name;
private String location_longitude;
private String passenger_id;
private long location_updated;
private String tour_director;
private String email;
private String first_name;
private String mobile_phone;
private String td_id;
public User() {
//empty default constructor, necessary for Firebase to be able to deserialize users
}
public String getTour_director_key() {
return tour_director_key;
}
public String getLast_name() {
return last_name;
}
public String getLocation_latitude() {
return location_latitude;
}
public String getTour_id() {
return tour_id;
}
public String getPhoto() {
return photo;
}
public String getTour_director_name() {
return tour_director_name;
}
public String getMiddle_name() {
return middle_name;
}
public String getLocation_longitude() {
return location_longitude;
}
public String getPassenger_id() { return passenger_id; }
public String getMobile_phone() { return mobile_phone; }
public long getLocation_updated() {
return location_updated;
}
public String getTour_director() {
return tour_director;
}
public String getEmail() {
return email;
}
public String getFirst_name() {
return first_name;
}
public String getTd_id() { return td_id; }
}
Données sur firebase pour l'utilisateur:
et enfin, le code & ligne, je reçois l'erreur est commenté.
Query userDataQuery = Constants.USER_REF.orderByKey().equalTo(mUserId);
userDataQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
////ERROR COMES FROM THE LINE BELOW ////
User currentUser = postSnapshot.getValue(User.class);
Log.i("THE_CURRENT_USER:::", currentUser.toString());
Log.i("THE_USERS_EMAIL:::", currentUser.getEmail());
...
Plein Stacktrace:
FATAL EXCEPTION: main
Process: app.timto.co.app, PID: 7453
com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Long to String
at com.google.android.gms.internal.zzaln.zzcc(Unknown Source)
at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
at com.google.android.gms.internal.zzaln.zza(Unknown Source)
at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zze(Unknown Source)
at com.google.android.gms.internal.zzaln$zza.zzcc(Unknown Source)
at com.google.android.gms.internal.zzaln.zzd(Unknown Source)
at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
at com.google.android.gms.internal.zzaln.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at app.timto.co.app.AttendanceActivity$1$1.onDataChange(AttendanceActivity.java:112)
at com.google.android.gms.internal.zzaie.zza(Unknown Source)
at com.google.android.gms.internal.zzaje.zzcta(Unknown Source)
at com.google.android.gms.internal.zzajh$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
OriginalL'auteur Amy Spoiler | 2016-09-17
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous êtes la création de la propriété "mobile_phone" comme une Chaîne de caractères et sur Firebase c'est un type Long.
Changement:
:
gaspillage d'environ une heure à essayer de comprendre quel est le problème avec mon code.Merci @Iulian Vărzaru
OriginalL'auteur V01D1
Vérifier si votre getters et de la classe/modèle sont égaux dans firebase base de données.
Lorsque la méthode .getValue() récupérer les données il comparer si les signatures sont les mêmes.
exemple:
En classe, nous avons un getLong
pour obtenir la valeur de récupérer dans firebase base de données
OriginalL'auteur Diego Venâncio
Problèmes
Solution:
Quand vous obtenez les valeurs de la base de données, enregistrer les valeurs par défaut du type de données. Alors, si vous souhaitez réutiliser le changement de valeur dans la chaîne en utilisant la méthode toString ().
OriginalL'auteur Malik Faizan
Pour moi, c'était le choix de setText(CharSequence texte) dans l'adaptateur qui a été utilisé pour remplir le recycleur vue. Veuillez voir image jointe pour plus de clarté
OriginalL'auteur DragonFire
Si vous souhaitez accéder à des données directement sans créer n'importe quel objet, Vous pouvez modifier le type de données de Chaîne de long.class
ou
OriginalL'auteur Tariqul