我正在尝试从数据库的两个不同子段中进行快照。
private String name;
snap1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
name = value
}
snap2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(value.equals(name)) {
//Do this
}
}
}
}
但是在完成第一个快照后,name
是null
。我看到onDataChange
内的名称不为null。如何将值存储到名称中并将其用于第二个数据快照?
答案 0 :(得分:0)
Firebase调用是Asynch,您必须等待第一个调用结束才能调用第二个。我不知道执行此操作的最佳方法,但是我制作了一个函数,并将其中一个调用放在其中,然后在第一个调用中调用了该函数。您可以像这样进行工作:
private String name;
snap1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
name = value
secondCall();
}
}
//The function with second call
secondCall(){
snap2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(value.equals(name)){
//Do this
}
}
}
}