2016-07-19 7 views
2

Вот мое заявление код:Firebase ошибка: не могу добавить ValueEventListener

database = FirebaseDatabase.getInstance(); 
myRef = database.getReference("lifts"); 

Почему я не могу добавить ValueEventListener? Я попробовал образец из руководства Firebase. Вот код:

myRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
}); 

Это работает, и я понятия не имею, почему?

myRef.addValueEventListener(new com.google.firebase.database.ValueEventListener() { 
    @Override 
    public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) { 
     for (com.google.firebase.database.DataSnapshot item: dataSnapshot.getChildren()) { 
      ... 
     } 
     ... 
    } 
});  
+0

У вас возникли какие-либо ошибки? Или ловушка? – Bobby

+0

Ошибка: (169, 37) error: несовместимые типы: <анонимный com.firebase.client.ValueEventListener> не может быть преобразован в com.google.firebase.database.ValueEventListener – Dominic

ответ

5

Ошибка в том, что вы должны использовать com.google.firebase.database.ValueEventListener. Но я думаю, что у вас есть импорт для com.firebase.client.ValueEventListener в вашем импорте поверх файла.

Из-за этого компилятор по умолчанию использует com.firebase.client.ValueEventListener, что, очевидно, терпит неудачу.

Чтобы исправить это, просмотрите свой импорт и удалите запись для com.firebase.client.ValueEventListener. Тогда вы можете добавить com.google.firebase.database.ValueEventListener

Этот подход не работает, если вам нужно использовать оба из них. Тогда нет другого решения, кроме использования полных имен (например, com.google.firebase.database.ValueEventListener вместо ValueEventListener) для обоих или хотя бы одного.

+0

Большое спасибо! Я изменил импорт, и теперь он работает! =) – Dominic

+0

Добро пожаловать, рад, что смогу помочь :) – Bobby

+0

большое спасибо –