我正在尝试将 TextView 设置为当前用户用户名,但收到此错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
这就是我检索用户名的方式:
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name= dataSnapshot.child("username").getValue().toString();
username.setText(name);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("ProfileActivity", "load:onCancelled", databaseError.toException());
}
});
这是我的用户节点:
这个:
mCurrUser = FirebaseAuth.getInstance().getCurrentUser();
Uid = mCurrUser.getUid();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(Uid);
最佳答案
dataSnapshot.child("username").getValue()
返回 null,这意味着您的查询位置没有名为“username”的子项。从您的评论来看,听起来您正在像这样构建 mDatabase
:
mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(Uid);
这里的问题是您的代码正在访问带有大写 U 的“Users”,但是您在数据库中显示的数据存在于带有小写 u 的“users”处。
关于java - 从 Firebase 检索数据时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60441127/