我试图让用户的信息在单击其个人资料时显示在警报对话框中。我可以单击该对话框,但对话框为空。用户数据存储在Firebase实时数据库中。Iv使用张贴代码Im,并在代码中添加注释。我想问题出在数据库参考还是DataSnapshot?
//Variables
usersDb = FirebaseDatabase.getInstance().getReference().child("Users");
mAuth = FirebaseAuth.getInstance();
currentUId = mAuth.getCurrentUser().getUid();
// OnItemClickListener
flingContainer.setOnItemClickListener(new SwipeFlingAdapterView.OnItemClickListener() {
@Override
public void onItemClicked(int itemPosition, Object dataObject) {
// users profile card
cards obj = (cards) dataObject;
final String userId = obj.getUserId();
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
DatabaseReference userbio = usersDb.child(userId).child("Bio");
userbio.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
if (dataSnapshot.child(userId).child("Bio").getValue() != null){
userBio = dataSnapshot.child("Bio").getValue().toString();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
builder.setTitle("Bio");
builder.setMessage(userBio);
// Set click listener for alert dialog buttons
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which){
case DialogInterface.BUTTON_POSITIVE:
// User clicked the Yes button
break;
case DialogInterface.BUTTON_NEGATIVE:
// User clicked the No button
break;
}
}
};
// Set the alert dialog yes button click listener
builder.setPositiveButton("Yes", dialogClickListener);
// Set the alert dialog no button click listener
builder.setNegativeButton("No",dialogClickListener);
AlertDialog dialog = builder.create();
// Display the alert dialog on interface
dialog.show();
}
}); }
也许是因为您两次调用child("Bio")
,首先在DatabaseReference中,然后在DataSnapshot中。尝试从其中之一删除它。