Android Studio如何在一个类中使用多个快照

时间:2018-12-29 00:06:40

标签: java android android-studio

我正在尝试从数据库的两个不同子段中进行快照。

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
            }
        }
    }
}

但是在完成第一个快照后,namenull。我看到onDataChange内的名称不为null。如何将值存储到名称中并将其用于第二个数据快照?

1 个答案:

答案 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
      }
    }
  }      
}