Как получить из базы данных Firebase данные о конкретном пользователе
Есть база данных Firebase в которую я во время регистрации вбиваю некоторые данные, они попадают в раздел Users под ключом UID из Auth:
public void writeUserToDB(Object data, String currentUser){
DatabaseReference myRef = mDataBase.child("Users/" + currentUser);
myRef.setValue(data);
}
mRegisterBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Переменные для регистрации
String id = mDataBase.getKey();
String name = mName.getText().toString().trim();
String email = mEmail.getText().toString().trim();
String password = mPassword.getText().toString().trim();
String userBinder = mUserBinder.getText().toString().trim();
//Проверка условий регистрации
if (TextUtils.isEmpty(email)) {
mEmail.setError("Введите почту...");
return;
}
if (TextUtils.isEmpty(password)) {
mEmail.setError("Введите пароль...");
return;
}
if (TextUtils.isEmpty(name)) {
mName.setError("Введите имя...");
return;
}
if (password.length() < 8) {
mPassword.setError("Пароль должен состоять из 8-ми символов.");
return;
}
//Регистрация пользователя
fAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
User newUser = new User(currentUser, id, name, email, password, userBinder);
//Запись нового пользователя в базу данных
currentUser = FirebaseAuth.getInstance().getCurrentUser().getUid();
writeUserToDB(newUser, currentUser);
Toast.makeText(Register.this, "Пользователь зарегистрирован.", Toast.LENGTH_LONG).show();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
} else {
Toast.makeText(Register.this, "Произошла ошибка. Повторите." +
task.getException().getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
});
Необходимо получать эти данные в MainActivity в виде переменных String, чтобы использовать при нажатии другой кнопки. Как в MainActivity и где (в OnCreate или в ButtonListener) написать listener, который получит данные по uid из Firebase и преобразует их в переменные для последующего использования. Вопрос от новичка. Отредактировано:
String uid = FirebaseAuth.getInstance().getUid();
mDataBase = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = mDataBase.child("Users/").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String email = ds.child("email").getValue(String.class);
String userBinder = ds.child("userBinder").getValue(String.class);
Log.d("TAG", email + "/" + userBinder);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
