Firebase операция асинхронная , поэтому вам нужно дождаться завершения операции, чтобы получить результат . Для доступа к данным за пределами onDataChange
вы можете использовать LiveData
и наблюдать за ними снаружи. Когда вы получите данные внутри onDataChange
, сообщите об этом LiveData
, указав значение. Проверьте ниже:
private MutableLiveData<String> tableName = new MutableLiveData<>();
DatabaseReference tableDatabaseReference = FirebaseDatabase.getInstance().getReference("tables");
tableDatabaseReference
.child(tableID)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String data = dataSnapshot.child("tableName").getValue(String.class);
//Now post that value to LiveData
tableName.postValue(data);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Обратите внимание на данные здесь
tableName.observe(this, name -> {
// use name here
});