当我读取Firebase数据库city
和town
变量时,为什么显示为空,为什么?
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"
此土司消息城市和城镇变量也显示为空,我希望在土司消息中向我显示“安塔利亚” +“阿拉尼亚”
Toast.makeText(UserInterfaceBerber.this,city+" "+town+" ",Toast.LENGTH_LONG).show();
答案 0 :(得分:0)
由于数据是从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);
有关更多信息,建议您从此 post 中查看答案的最后部分,在其中我已经解释了如何使用自定义回调来完成。您也可以查看此 video 以获得更好的理解。