提问者:小点点

在我的应用程序中,我正在尝试使用userID从数据库中获取特定的用户信息,我正在获得空字段,我成功地将其存储在那里


在我的应用程序中没有错误显示问题所在这是我检索数据的代码:

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图像:


共1个答案

匿名用户

我想你对你的推荐人有意见。代码应为

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();
        }
    });
}