Comment afficher tous les marqueurs de la base de données Firebase?
Je suis entré dans la base de données des données dans ce formulaire: p>
mais seulement ce qui est mis en surbrillance dans le dessin est affiché! J'écris le code comme celui-ci: p> DIT-moi comment afficher tous les marqueurs de la base de données correctement? P> Erreur: P> 2020-04-22 23:10:12.031 18972-18972/by.sviter.stop E/AndroidRuntime: FATAL EXCEPTION: main
Process: by.sviter.stop, PID: 18972
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at by.sviter.stoprevizor.tabs.maps.MapsFragment$3$1.onDataChange(MapsFragment.java:337)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.2.1:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
3 Réponses :
Une fois la portée de DatasnaShot pour la boucle terminée, vous pouvez manipuler le contenu de l'objet DataModel à l'aide des getters et des Setteurs que vous auriez dû mettre en œuvre. p>
Si cela ne fonctionne pas. Vérifiez si votre objet MMARKERS1 pointe vers la classe correcte, ou modifiez l'addlistenerforsingleValueEeEevente à AddValueEventListener. P>
en supposant que dn4o ... mgg2 code> est le
uid code> de l'utilisateur authentifié, pour obtenir les valeurs des propriétés de latitude et de longitude, veuillez utiliser les lignes de code suivantes :
// ...
// ...
53.9148950..., 27.4380507...
donne constamment une erreur: tentative d'invoquer la méthode virtuelle 'java.lang.string java.lang.string.trim ()' sur une référence objet nulle à l'emplacement en lettlng
Lorsque vous utilisez exactement mon code, il n'y a aucun moyen d'obtenir une telle erreur E, car je n'ai jamais utilisé couper () code>. Vous pouvez modifier votre question et ajouter le code modifié afin que nous puissions y jeter un coup d'œil. Laissez un message lorsque vous avez terminé.
Votre code fonctionne pleinement! Merci! Mais cela ne montre que les marques que celles que j'ai mis! Mais comment montrer toutes les tags ??
@ user3711927 Dans ce cas, veuillez consulter ma réponse mise à jour et dites-moi si cela fonctionne.
ne marche pas! Écrit une erreur: java.lang.string java.lang.string.trim () 'Pour faire référence à un objet vide
@ user3711927 à quelle ligne de code obtenez-vous cette erreur?
Letlng emplacement = nouveau letlng (double.Parsedouble (latitude), double.Parsedouble (longitude));
Veuillez modifier votre question et ajouter le code complet que vous utilisez. Je ne peux voir aucun coup de garniture () dans mon code qui peut potentiellement produire cette erreur.
remarqué que si je me suis connecté avec mon compte et que vous y trouverez des enregistrements, la base de données ne donne que mes archives, mais ne voient pas d'autres personnes du tout! Et si vous allez sous votre compte et qu'il n'y a pas encore d'entrées dans la base de données, il voit le reste, mais ne peut pas afficher, de là il y a une erreur!
Selon le code que vous utilisez, vous obtenez des résultats de votre dossier ou de tous les enregistrements. Quelle est l'erreur?
J'ai besoin d'afficher toutes les entrées
Vous devez supprimer l'appel à .child (firebaseauth.getuid ()) code>, afin d'obtenir tous les résultats. Voir ma deuxième solution. Ça marche de cette façon?
Aucune erreur ne donne: java.lang.string java.lang.string.trim () à la Latlng Location
Veuillez ajouter tout le message et la ligne à laquelle elle se produit.
À quelle ligne de code est cette erreur java.lang.nullpointException: tentative d'invoquer la méthode virtuelle 'java.lang.string java.lang.string.trim ()' sur une référence objet nulle code> se produire? Comme je le vois dans votre code, vous utilisez toujours
.child (firebaseauth.getuid ()) code>, ce qui n'est pas correct.
Letlng emplacement = nouveau letlng (double.Parsedouble (latitude), double.Parsedouble (longitude));
Toujours appeler .child (Firebaseauth.getuid ()) code>, ne vous aidera jamais à résoudre le problème.
Seuls mes marqueurs sont montrés avec elle, mais sans cela, cela donne une erreur et rien ne fonctionne
Si vous utilisez la même solution exacte b> la même solution, je vous ai fourni dans la partie "Edit", est-ce quelque chose d'imprimé dans le logcat?
dans logcat vient null, null
Comme vous l'avez dit, vous pouvez obtenir les données de l'utilisateur connecté, comme en surbrillance dans la capture d'écran. Donc, le problème initial est résolu. En ce qui concerne le second, je vous suggère de poster une nouvelle question à l'aide de son propre MCVE , donc I et d'autres développeurs de Firebase peuvent vous aider.
Vous devez utiliser addvvalueeeventlistner au lieu de AddListenerforsingleValueEeEvent
Vous devez exécuter une boucle pour obtenir toutes les données telles que ... p>
DatabaseReference racinef = Firebasedatabase.getinstance (). GetReference (); rootref.child ("marqueurs"). addvalueeeventlistner (nouveau valuantventListner { p>
@override
Public Void Ondatachange (DataSnapshot DataSnapshot) {
Pour (Datasnapshot Snap: Datasnapshot.getchildern ()) {
lancer dans votre classe modèle
}
} p> }); p> p>