【发布时间】:2019-10-20 22:37:57
【问题描述】:
我正在尝试从我的 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);
【问题讨论】:
-
您是否进行了调试以查看
dataSnapshot中的确切内容?你的回调是否被调用? -
如果您在 DataSnapshot 中获得正确的数据,则在 onDataChanged() 中移动此行 welcomeText.setText("Welcome " + fName + "!您以 " + role) 身份登录。
-
您很可能受到从 Firebase 加载数据的异步性质的影响,并且您的
welcomeText.setText(...)在调用onDataChange之前执行。有关更多详细信息和示例,请在此处查看我的答案:stackoverflow.com/questions/50434836/…
标签: java android firebase firebase-realtime-database