Я нахожусь в процессе перемещения своей базы данных из реального времени в пожарную, и у меня возникли некоторые проблемы.В настоящее время я пытаюсь загрузить данные из базы данных и отобразить их в виде текста.Это то, с чем я работаю
@Override
protected void onStart() {
super.onStart();
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = mCurrentUser.getUid();
db.collection("Users").document(current_uid).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
Log.d(TAG, "hello did this work");
String username = documentSnapshot.getString("name");
mName.setText(username);
}
});
}
, когда я запускаю отладчик. username равно нулю, поэтому я считаю, что он не получает данные, которые я дважды проверил ссылки.Я также верю, что это может быть связано с получением UID, но я не уверен и не могу понять, почему он не получит полный класс данных ниже https://pastebin.com/n6HVABM2
база данных:
предыдущий код в режиме реального времени: https://pastebin.com/WQeimx7s
Где я нахожусь:
ОК, поэтому я подключил слушателей authstate, чтобыЯ получаю UID, но блок кода внутри слушателя не запускается, и я не могу понять, почему.Я пытался использовать mAuth.addAuthStateListener(mAuthListner);
на OnStart, но это не сработало код, с которым я работаю
@Override
protected void onStart() {
super.onStart();
//do i have to attach this listner?
//mAuth.addAuthStateListener(mAuthListner);
mAuth = FirebaseAuth.getInstance();
mAuthListner = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
String currentUser = mAuth.getCurrentUser().toString();
db.collection("Users").document(currentUser).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
Log.d(TAG, "hello did this work");
String username = documentSnapshot.getString("name");
mName.setText(username);
}
});
}
};
}