在我的应用程序中没有错误显示问题所在这是我检索数据的代码:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fargment_profile, container, false);
name = (TextView) view.findViewById(R.id.name);
mail = (TextView) view.findViewById(R.id.mail);
phone = (TextView) view.findViewById(R.id.phone);
user = FirebaseAuth.getInstance().getCurrentUser();
userID = user.getUid();
//show all data
ShowUser();
return view;
}
private void ShowUser() {
databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String username = snapshot.child(userID).child("name").getValue(String.class);
String usermail = snapshot.child(userID).child("email").getValue(String.class);
String userphone = snapshot.child(userID).child("phone").getValue(String.class);
mail.setText(usermail);
name.setText(username);
phone.setText(userphone);
} else {
Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getContext(), "" + error, Toast.LENGTH_SHORT).show();
}
});
}
这是我的Firebase图像:
我想你对你的推荐人有意见。代码应为
FirebaseDatabase.getInstance().getReference().child("users")
您没有通过此代码引用用户节点databaseReference=firebaseDatabase.getInstance().getReference();
最好还将用户id添加到databaseReference的顶部,这样就可以避免您反复提及snapshot.child(userID)
用于参考的代码till userId为:
FirebaseDatabase.getInstance().getReference().child("users").child(userID);
最终代码:
private void ShowUser() {
databaseReference = FirebaseDatabase.getInstance().getReference("users").child(userID);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String username = snapshot.child("name").getValue(String.class);
String usermail = snapshot.child("email").getValue(String.class);
String userphone = snapshot.child("phone").getValue(String.class);
mail.setText(usermail);
name.setText(username);
phone.setText(userphone);
} else {
Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getContext(), "" + error, Toast.LENGTH_SHORT).show();
}
});
}