База данных Firebase возвращает значение null - PullRequest
0 голосов
/ 05 мая 2020

Когда я читаю в базе данных Firebase city и town переменные показывают мне значение null, почему?

Denemesiralamaisyerleri deneme=new Denemesiralamaisyerleri();
            FirebaseUser firebaseUser=firebaseAuth.getCurrentUser();
            String id=firebaseUser.getUid();
            DatabaseReference userdata=FirebaseDatabase.getInstance().getReference().child("users").child(id);
            ValueEventListener rdn=new ValueEventListener() {
                @Override
                public void onDataChange( DataSnapshot dataSnapshot) {     //read user info from database
                    deneme=dataSnapshot.getValue(Denemesiralamaisyerleri.class);

            }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(UserInterfaceBerber.this,databaseError.getMessage(),Toast.LENGTH_LONG).show();
                }
            }; 
            userdata.addValueEventListener(rdn); 
            city=deneme.getCity();
            town=deneme.getTown();
            ilin.setText(city);
            ilcenin.setText(town);
            Toast.makeText(UserInterfaceBerber.this,city+" "+town+" ",Toast.LENGTH_LONG).show();

Моя структура базы данных выглядит так:

users
igORGoET3gT6i8CV4wvtuN3l08z1
city: 
"Antalya"
email: 
"ahmetbulur@gmail.com"
namesurname: 
"Ahmet bulur"
phonenum: 
"05346789445"
town: 
"Alanya"

Также этот тост сообщение city и городская переменная show to null Я ожидаю, что в тостовом сообщении мне будет показано "Antalya" + "Alanya"

Toast.makeText(UserInterfaceBerber.this,city+" "+town+" ",Toast.LENGTH_LONG).show();

1 Ответ

0 голосов
/ 05 мая 2020

Поскольку данные загружаются из Firebase асинхронно, вы должны использовать эти данные только после завершения операции, и это только внутри метода onDataChange(), как в следующих строках кода:

Denemesiralamaisyerleri deneme=new Denemesiralamaisyerleri();
FirebaseUser firebaseUser=firebaseAuth.getCurrentUser();
String id=firebaseUser.getUid();
DatabaseReference userdata=FirebaseDatabase.getInstance().getReference().child("users").child(id);
ValueEventListener rdn=new ValueEventListener() {
    @Override
    public void onDataChange( DataSnapshot dataSnapshot) {     //read user info from database
        deneme=dataSnapshot.getValue(Denemesiralamaisyerleri.class);
        city=deneme.getCity();
        town=deneme.getTown();
        ilin.setText(city);
        ilcenin.setText(town);
        Toast.makeText(UserInterfaceBerber.this,city+" "+town+" ",Toast.LENGTH_LONG).show();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Toast.makeText(UserInterfaceBerber.this,databaseError.getMessage(),Toast.LENGTH_LONG).show();
    }
};
userdata.addValueEventListener(rdn);

Для получения дополнительной информации я рекомендую вам увидеть последнюю часть моего ответа из этого сообщения , в котором я объяснил, как это можно сделать с помощью настраиваемого обратного вызова. Вы также можете посмотреть это видео для лучшего понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...