我正在尝试从我的Firebase数据库检索数据并在文本字段中打印一条语句,但是我一直得到空值。我正在使用userid
尝试到达所需的子节点。我的文本字段一直在说“欢迎将null登录为null” My Firebase Database
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
final String uid;
FirebaseUser user;
user = FirebaseAuth.getInstance().getCurrentUser();
uid = user.getUid();
DatabaseReference reference =
FirebaseDatabase.getInstance().getReference("User");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
fName = dataSnapshot.child(uid).child("fName").getValue(String.class);
role = dataSnapshot.child(uid).child("role").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
welcomeText = (TextView) findViewById(R.id.welcomeText);
welcomeText.setText("Welcome " + fName + "! You are logged-in as " + role);
答案 0 :(得分:1)
将以下行移动到onDataChange()回调方法。
welcomeText = (TextView) findViewById(R.id.welcomeText);
welcomeText.setText("Welcome " + fName + "! You are logged-in as " + role);
答案 1 :(得分:1)
您应该以{{1}}作为孩子,仅获取登录用户的数据。当前,您遍历所有用户,最后给您错误的数据。 尝试如下:
userid
代替
DatabaseReference reference =
FirebaseDatabase.getInstance().getReference("User").child(uid);
此外,当前您正在设置DatabaseReference reference =
FirebaseDatabase.getInstance().getReference("User");
和fName
的初始值为空,并且永远不会使用在role
中获得的用户详细信息来更新该值。因此,请在onDataChange
中更新您的TextView
。
onDataChange