Java 从Firebase实时数据库中选择
我的数据库有这样的结构:Java 从Firebase实时数据库中选择,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我的数据库有这样的结构: 但是我没有得到用户,有人能告诉我我是否选错了吗 在我创建的用户类中,我没有为每个属性包含get和set,以避免形成文本墙: Process: ro.LearnByPlaying.Activitati, PID: 16319 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String ro.LearnByPLaying.Beans.User.getEmailAd
但是我没有得到用户,有人能告诉我我是否选错了吗 在我创建的用户类中,我没有为每个属性包含get和set,以避免形成文本墙:
Process: ro.LearnByPlaying.Activitati, PID: 16319
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String ro.LearnByPLaying.Beans.User.getEmailAddress()' on a null object reference
at ro.LearnByPLaying.Activitati.LoginActivity$1$2.onComplete(LoginActivity.java:104)
at com.google.android.gms.tasks.zzj.run(Unknown Source:23)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
我调用我的主要方法来获得这样的用户:
public class User implements Serializable{
private String firstName;
private String lastName;
private String nickName;
private Date dateOfBirth;
private String country;
private String town;
private String phoneNumber;
private String phoneModel;
private String emailAddress;
private String userFirebaseID;
private String dateAccountCreated;
... (getters and setters are generated too )
在哪里
User userObject = FirebaseRealtimeDBUtils.getUser(USER_FIREBASE_ID);
解决方案(临时):首先,我想再次感谢李维·阿尔伯克基,我这样做解决了我的问题: -我没有使用方法,我直接在我需要响应的类中进行选择(对象用户)(相同的选择) -这就是我得到的:
USER_FIREBASE_ID is auth.getUid();
我这样做有两个原因:intent.putExtra(“会话用户”,用户[0])
星触觉(意向)
完成()
1)我的日志显示它启动了活动,奇怪的是,选择表单DB是在活动启动后而不是之前完成的
2)选择完成了我得到了用户对象,但它没有时间将其放入会话(意图),因为我从未在第二个活动中得到它,所以我的解决方案只是在从FirebaseDB获得用户时,在最后一行代码之后启动该活动,很高兴你找到了:)可能的重复
USER_FIREBASE_ID is auth.getUid();
final User[] user = new User[1];
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("USERS");
ref.child(USER_FIREBASE_ID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
user[0] = dataSnapshot.getValue(User.class);
Log.d("Activitati", "child email: ---------- " + user[0].getEmailAddress());
intent.putExtra("SESSION_USER", user[0]);
startActivity(intent);
finish();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("Activitati", getClass().getName() + " DB ERROR: " + databaseError.getMessage());
}
});