我正在尝试从Firebase实时数据库中检索用户的用户名。我正在使用ValueEventListener,但无法正常工作。我将数据另存为User对象。我的User模型类具有getter和setter,参数化和空白构造函数。请帮忙。我的问题是,我缺少或做错了什么。
这是我用来保存User对象的路径:
mDatabaseRef = FirebaseDatabase.getInstance().getReference();
mDatabaseRef.child("users").child(user_type).child(mUserId).child("personal information").setValue(user);
这是我用来检索数据的代码,但是它不起作用!
mFirebaseUser = mFirebaseAuth.getCurrentUser();
userName = (TextView) findViewById(R.id.userNameHeader);
//check to see if user is logged in
if(mFirebaseUser==null){
//the user is not logged in, start login activity
loadLogInView();
}else {
mUserId = mFirebaseUser.getUid();
mDatabaseRef = FirebaseDatabase.getInstance().getReference(
"users").child("Buyer Account").child(mUserId).child("personal information");
mDatabaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
userName.setText(user.getUserName());
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
}
});
您的字段名称和方法名称为getUserName
的问题。
mDatabaseRef = FirebaseDatabase.getInstance().getReference("users").child("Buyer Account").child(mUserId).child("personal information");
mDatabaseRefr.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name1 = dataSnapshot.child("userName").getValue(String.class);
Log.e("name", name1);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled", databaseError.toException());
}
});
更改方法:
getUserName()
至:
getuserName()