我有一个Firebase数据库,我想从中检索朋友ID。这非常有效,因为我在for循环中记录friendUserId时获得了正确的值。但是,方法结束时的日志仅在执行两次方法后显示正确的值。首先它显示" s",第二次显示我想要的字符串。我觉得它与处理查询的时间有关,但我不确定。我该如何解决这个问题?
public String friendUserId="s";
public void checkUserExistence() {
mDatabase.child("Users")
.orderByChild("username")
.equalTo(EmailSearchQuery)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
friendUserId = childSnapshot.getKey();
Log.d("dwada",friendUserId);
}
} else
Toast.makeText(AddAFriend.this, "Gebruiker niet gevonden", Toast.LENGTH_LONG);
}
@Override
public void onCancelled(DatabaseError firebaseError) {
Log.e("MainActivity", "onCancelled", firebaseError.toException());
}
});
Log.d("dwada",friendUserId);
}