Android Firebase Показать текущие данные пользователя - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь показать детали текущего пользователя, вошедшего в систему. Я попробовал несколько методов, чтобы попытаться решить эту проблему, но все, что кажется, возвращает ноль. Моя база данных firebase:

Database

Где я ошибаюсь?

FirebaseAuth mAuth = FirebaseAuth.getInstance();

FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();


Button mBeerButton;
Button mBeerButtonTwo;
Button mBeerButtonThree;
Button mBeerButtonFour;
Button mSignOutButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_screen);


    String mUserID = firebaseAuth.getCurrentUser().getUid();
    DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("Users");

    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String mUsername = dataSnapshot.child("mUserName").getValue().toString();
            Toast.makeText(homeScreen.this,"User name is "+ mUsername,Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Посмотрите на свою JSON структуру. Вы пропускаете один из узлов. Измените его следующим образом:

ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String mUsername = dataSnapshot.child("JoBlogsUser").child("mUserName").getValue().toString();
            Toast.makeText(homeScreen.this,"User name is "+ mUsername,Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
0 голосов
/ 14 марта 2020

В качестве альтернативы ответу Yunus (который отлично работает, если вы знаете ключ узла, который вы хотите показать), вот как вы можете получить все узлы в Users и затем выполнить итерации по дочерним узлам:

ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            String mUsername = userSnapshot.child("mUserName").getValue(String.class);
            Toast.makeText(homeScreen.this,"User name is "+ mUsername,Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        throw databaseError.toException(); // never ignore errors
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...