פורסם 2019 במרץ 256 שנים I'm having issue retrieving data from firebase.im trying to get the information related to this node "0506326662" and the sub-node "Location". I also created class named UserInformation that will hold the data as an object but for some reason i'm getting an error and i have no clue where it comes from and why. databaseReference.child("Users").child(numbeT). child("Location").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for(DataSnapshot ds:dataSnapshot.getChildren()) { uInfo=new UserInformation(); uInfo.setLastOnline(ds.child(numbeT).getValue(UserInformation.class).getLastOnline()); uInfo.setLag(ds.child(numbeT).getValue(UserInformation.class).getLag()); uInfo.setLat(ds.child(numbeT).getValue(UserInformation.class).getLat()); 2019-03-23 17:58:52.187 4657-4657/com.alrubaye.mytracker E/AndroidRuntime: FATAL EXCEPTION: main Process: com.alrubaye.mytracker, PID: 4657 java.lang.NullPointerException: Attempt to invoke virtual method 'java.text.SimpleDateFormat com.alrubaye.mytracker.UserInformation.getLastOnline()' on a null object reference at com.alrubaye.mytracker.MyServie$1.onDataChange(MyServie.java:79) at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.1.0:75) at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.1.0:63) at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.1.0: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:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) package com.alrubaye.mytracker; import java.text.SimpleDateFormat; public class UserInformation { private SimpleDateFormat lastOnline; private String lag; private String lat; public UserInformation() { } public SimpleDateFormat getLastOnline() { return lastOnline; } public void setLastOnline(SimpleDateFormat lastOnline) { this.lastOnline = lastOnline; } public String getLag() { return lag; } public void setLag(String lag) { this.lag = lag; } public String getLat() { return lat; } public void setLat(String lat) { this.lat = lat; } } }
פורסם 2019 במרץ 256 שנים משהו בעימוד של הקוד יוצא הפוך באתר ומקשה מאוד לקרוא אותו. מעולם לא עבדתי עם firebase אבל לפי הודעת השגיאה ברורה הבעיה. אתה מנסה לפנות ל-UserInformation של הרשומה ולבצע פעולת getLastOnline אבל לרשומה שאתה פונה אליה אין UserInformation ולכן אתה מקבל NullPointerException, גם בתמונת הנתונים מה-db אפשר לראות שאין שם UserInformation. תשנה את הקוד שלך למשהו כזה, גם מבחינת ביצועים וקריאות קוד זה עדיף: for(DataSnapshot ds:dataSnapshot.getChildren()) { UserInformation dataInfo = ds.child(numbeT).getValue(UserInformation.class) if (dataInfo != null){ uInfo = new UserInformation(); uInfo.setLastOnline(dataInfo.getLastOnline()); uInfo.setLag(dataInfo.getLag()); uInfo.setLat(dataInfo.getLat()); } נערך 2019 במרץ 256 שנים על-ידי etal
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.