我无法从数据快照中检索任何值。我尝试了多种方法和技巧,但它给出了一个空值。
我的数据库的图像如上。 请参阅下面的代码,尝试记录一个值,一切似乎都正确但不起作用。
email = view.findViewById(R.id.email);
editTextfragmentF = view.findViewById(R.id.editText_firstname);
editTextfragmentL = view.findViewById(R.id.editText_lastname);
FirebaseAuth mAuth = FirebaseAuth.getInstance();
String UserID = mAuth.getCurrentUser().getUid();
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference().child("Users").child(UserID).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if (mAuth.getCurrentUser() != null) {
email.setText(mAuth.getCurrentUser().getEmail());
//Gets current users first name
String FN = String.valueOf(dataSnapshot.child("firstName").getValue());
Log.i("First Name", FN);
/*String LN = dataSnapshot.child("lastName").getValue().toString();
Log.i("Last Name", LN);*/
/*editTextfragmentF.setText(FN);
editTextfragmentF.requestFocus();*/
/*editTextfragmentL.setText(LN);
editTextfragmentL.requestFocus();*/
}
}
结果:
最佳答案
你需要改变
database.getReference().child("Users").child(UserID).addChildEventListener
与
database.getReference().child("Users").child(UserID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
email.setText(dataSnapshot.child("email").getValue(String.class));
String FN = dataSnapshot.child("firstName").getValue(String.class);
Log.i("First Name", FN);
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
确保您已在 AndroidManifest.xml
中授予互联网访问权限
<manifest xlmns:android...>
...
<uses-permission android:name="android.permission.INTERNET" />
<application ...
</manifest>
关于java - 如何从当前登录的用户 Firebase、Android 中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170904/