Я думаю, что проблема в mCurrentUserId
, так как ошибка, которую вы показали в logcat, говорит, что не может передать null
в child()
.
Если это так, то ваш mCurrentUserId
неверно получен.Вы можете попытаться получить его следующим образом:
FirebaseAuth mAuth;
mAuth = FirebaseAuth.getInstance();
mCurrentUserId = mAuth.getCurrentUser().getUid();
Однако более точный и точный ответ может быть дан, если вы прикрепите структуру своей базы данных.
Редактировать: Св вашей структуре базы данных я не вижу ни одного поля с именем Users
.Так что проблема в том, что вы не правильно ссылаетесь на свою базу данных.
Вы должны попробовать заменить свой код следующим кодом:
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("Requests").child("Toddlers").child(mCurrentUserId);
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String selected_group = dataSnapshot.child("group").getValue().toString();
String position = dataSnapshot.child("position").getValue().toString();
if (position.equals("head of toddlers"))
{
my_group = "Toddlers";
}
else if (position.equals("head of juniors"))
{
my_group = "Juniors";
}
else if (position.equals("head of seniors"))
{
my_group = "Seniors";
}
else if (position.equals("head of ambassadors"))
{
my_group = "Ambassadors";
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Edit2: После просмотраВаш полный код и база данных, проблема в том, что вы не ссылаетесь правильно.Вы можете заменить часть своего кода следующим образом:
mDatabase = FirebaseDatabase.getInstance().getReference().child("Head of departments").child("head of toddlers");
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if (dataSnapshot.exists() && dataSnapshot != null)
{
mDatabase.child("Requests").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if (dataSnapshot.exists() && dataSnapshot != null)
{
mMessageReference = FirebaseDatabase.getInstance().getReference().child("Head of departments").child(my_department).child("Requests");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Я добавил код в точности так, как вы хотите, но я не вижу узла с именем position
в изображении вашей базы данных.Итак, я надеюсь, что это присутствует.