首页 > 解决方案 > 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名字不是空的。如何将值存储到名称中并将其用于第二个数据快照?

标签: javaandroidandroid-studio

解决方案


Firebase 调用是异步的,您必须等待第一个调用结束才能调用第二个调用。我不知道执行此操作的完美方法,但我创建了一个函数并将我的一个调用放入其中并在第一个调用中调用该函数。你可以像这样做你的工作:

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

推荐阅读