# #android #firebase #firebase-realtime-database
Вопрос:
Я новичок в Firebase, и у меня возникли проблемы с методом onDataChange (). onDataChange() не вызывается.
Вот мой код:
DatabaseReference mref = FirebaseDatabase.getInstance().getReference("songs");
System.out.println("I am in Oncreate()");
ValueEventListener event = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
System.out.println("I am in onDataChange()");
for(DataSnapshot ds:snapshot.getChildren()){
String name =ds.child("name").getValue(String.class);
System.out.println("I am printing name: " name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
System.out.println("Firebase Error" error.toException());
}
};
mref.addListenerForSingleValueEvent(event);
System.out.println("I called mref.addlistner...()");
Правила доступа к Firebase следующие:
{
"rules": {
".read": "true",
".write": "true"
}
}
Комментарии:
1. Это
System.out.println("Firebase Error" error.toException());
что-то показывает в логкате? Срабатывает ли вообще ваш onDataChange или onCancelled?2. @AlexMamo Нет, в логкате ничего нет. onDataChange или onCancelled даже не были запущены. Вот что я хочу сказать. Даже
System.out.println("I am in onDataChange()");
неSystem.out.println("Firebase Error" error.toException());
был казнен и никогда не был казнен.3. Скорее всего, вы не можете подключиться к серверам Firebase или у вас нет подключения к Интернету на устройстве пользователя.
4. @AlexMamo Проблема Решена. Я не указывал URL-адрес базы данных в
getInstance()
методе.
Ответ №1:
В методе onDataChanged() вы должны добавить условие if, подобное этому, а затем вставить свой код внутрь.
if(snapshot.exists()){}
Это позволит убедиться, что ваш снимок действительно есть.
Комментарии:
1. Но даже
System.out.println("I am in onDataChange()");
это заявление не напечатано.