我正在尝试使用代码 straight from their documentation 从 Firebase 数据库中读取数据。我的代码如下,当我尝试将 ValueEventListener
添加到我的 Firebase 引用
变量时,我看到以下错误。
addValueEventListener (com.firebase.client.ValueEventListener) in Query cannot be applied to (com.firebase.client.ValueEventListener)
我很困惑为什么会出现此错误,因为以下是我在 Java 类文件顶部使用的 import
语句。
import com.google.firebase.database.ValueEventListener;
基本上,我只是想从运行的 Firebase 中获得基本的读取信息。我做错了什么?
public void readfromFireDB() {
Firebase ref = new Firebase("https://my_project.firebaseio.com/");
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Question qn = postSnapshot.getValue(Question.class);
mLog.printToLog("RECEIVED DATA = " + qn.getAnswer() + "," + qn.getLevel());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
mLog.printToLog("in onCancelled, database error = " + databaseError.toString());
}
};
ref.addValueEventListener(postListener); //THIS IS WHERE THE ERROR IS
}
更新:
使用整个类名后仍然遇到同样的问题:com.google.firebase.database.ValueEventListener postListener = new com.google.firebase.database.ValueEventListener() { ... }
最佳答案
您将旧版 SDK (2.X) 中的类与新 SDK (9.X) 混合。 Firebase是遗产,ValueEventListener是新的。
要使用新的 SDK,所有导入都应以 com.google.firebase.database
开头。
旧版导入以 com.firebase.client
开头。
我假设您想使用新的 SDK。如果是这样,您的模块 build.gradle 依赖项应包括:
compile 'com.google.firebase:firebase-database:9.4.0'
并且不应该包括:
compile 'com.firebase:firebase-client-android:2.5.0'
关于java - 从 Firebase 读取时出错错误 : ValueEventListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924846/