Вам нужно инициализировать ваш массив.
List<String> allRestNames = new ArrayList();
Но если вы запустите код так, как он у вас есть, вы не Log
ничего
Это то, что называетсясостязание », вы запускаете асинхронный код, ожидающий, что результат будет получен, как только вы его вызовите.
Когда вы отправляете запрос к API, как вы делаете это с помощью службы Firebase, требуется время.
Итак, что вы должны сделать, если хотите Записать результаты, сделайте это в обратном вызове:
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.food_activity);
findRestaurantKey();
}
private void findRestaurantKey() {
mDatabase = FirebaseDatabase.getInstance();
mDatabaseReference = mDatabase.getReference("x");
mDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot d : dataSnapshot.getChildren()) {
allRestNames.add(d.getKey());
}
// HERE is when the data is available from the Firebase service
Log.d("ARRAY" , allRestNames.toString());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}