У меня есть следующая структура Firebase:
Users" : {
"angelbreath" : {
"PvP_Wins" : 0,
"PvP_scores" : 0,
"avatar" : "https://i.imgur.com/qp9gnKE.png",
"gender" : "Male",
"userName" : "angelbreath",
"user_class" : "Bard",
"user_id" : "sC8JGw6SvMUGH4Id1HwcSf6Sl5n1"
},
Я пытаюсь получить данные текущего пользователя авторизации без удачи из-за нулевого исключения.После многих попыток у меня получился следующий код:
private void showData() {
DatabaseReference Users = database.getReference("Users");
final Query userQuery = Users.orderByChild("user_id");
final FirebaseUser user = firebaseAuth.getCurrentUser();
userQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot post : dataSnapshot.getChildren() ){
if(post.child("user_id").getValue().equals(user.getUid())){
Log.d("Output", "Found");
Log.d("Output", post.getKey().toString());
userClass.setText(post.child("user_class").getValue().toString());
userGender.setText(post.child("gender").getValue().toString());
}else{
Log.d("Output", "Failure");
}
Log.d("Output", post.child("user_id").toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Как я могу понять, потому что я новичок в firebase, у меня правильная ссылка и я запрашиваю правильный путь.Я не могу понять, почему я получаю исключение.На всякий случай у меня тоже есть следующая проверка:
//Checking whether a user as already Logged In
if(firebaseAuth.getCurrentUser()==null){
finish();
//Starting the User Login Activity if the user is not Logged in
startActivity(new Intent(this,MainActivity.class));
}
Так что я думаю, что у меня есть текущий пользователь и его идентификатор, поэтому я запрашиваю пользователей с идентификатором пользователя.Что случилось?
Я буду признателен за любую помощь!
РЕДАКТИРОВАТЬ журнал ошибок:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String eu.healthydev.quizhero.Model.User.getUserName()' on a null object reference
at eu.healthydev.quizhero.UserProfile$1.onDataChange(UserProfile.java:88)
at com.google.firebase.database.obfuscated.zzap.zza(com.google.firebase:firebase-database@@16.0.2:75)
at com.google.firebase.database.obfuscated.zzca.zza(com.google.firebase:firebase-database@@16.0.2:63)
at com.google.firebase.database.obfuscated.zzcd$1.run(com.google.firebase:firebase-database@@16.0.2:55)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
Java: 88
if(post.child("user_id").getValue().equals(user.getUid())){
Модель пользователя:
public class User {
int PvP_wins, PvP_score;
private String user_class, user_gender, userName;
private String avatar, userid;
public User() {
}
public User(int pvP_wins, int pvP_score, String user_class, String user_gender, String userName, String avatar, String userid) {
PvP_wins = pvP_wins;
PvP_score = pvP_score;
this.user_class = user_class;
this.user_gender = user_gender;
this.userName = userName;
this.avatar = avatar;
this.userid = userid;
}
public int getPvP_wins() {
return PvP_wins;
}
public void setPvP_wins(int pvP_wins) {
PvP_wins = pvP_wins;
}
public int getPvP_score() {
return PvP_score;
}
public void setPvP_score(int pvP_score) {
PvP_score = pvP_score;
}
public String getUser_class() {
return user_class;
}
public void setUser_class(String user_class) {
this.user_class = user_class;
}
public String getUser_gender() {
return user_gender;
}
public void setUser_gender(String user_gender) {
this.user_gender = user_gender;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}