我无法从dataSnapshot的Firebase数据库dataSnapshot中获取String值。我想遍历“表” dataSnapshot中的键,然后使用每个键在另一个dataSnapshot中打印一个值。我从内部快照中打印的值是正确的,但不适用于外部快照和我要分配给它的变量。有没有更正确的方法来做到这一点?这是我正在尝试的示例:
String extracted;
String key;
onCreate(){
DatabaseReference dbRef1 = FirebaseDatabase.getInstance().getReference().child("Table");
dbRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()){
key = data.getKey();
DatabaseReference dbRef2 = FirebaseDatabase.getInstance().getReference().child(key);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
extracted = dataSnapshot.getValue().toString();
System.out.println(extracted);//prints correct value
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
System.out.println(extracted); //prints null
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}