从Firebase中读取错误错误:ValueEventListener

问题描述:

我正在尝试使用代码straight from their documentation从Firebase数据库读取数据。我的代码如下,当我尝试将ValueEventListener添加到我的Firebase reference变量中时,我看到以下错误。从Firebase中读取错误错误:ValueEventListener

addValueEventListener (com.firebase.client.ValueEventListener) in Query cannot be applied to (com.firebase.client.ValueEventListener)

我很困惑,为什么出现这种错误,因为下面是import声明我在Java类文件的顶部使用。

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 

} 

enter image description here

UPDATE: 仍然有使用整个类名后,同样的问题前夜:从传统的SDK com.google.firebase.database.ValueEventListener postListener = new com.google.firebase.database.ValueEventListener() { ... }

enter image description here

+0

尝试完全限定类名:'com.google.firebase.database.ValueEventListener postListener = new com.google.firebase.database.ValueEventListener(){...}'看看是否可以解决这个问题。 –

+0

仍然收到错误。用我看到的错误更新了问题。这是因为我的'ref'变量期望使用'com.google.firebase.client.ValueEventListener'而不是'com.google.firebase.database.ValueEventListener' – user1406716

+0

如果您从此链接开始“install firebase sdk”https: //firebase.google.com/docs/android/setup ,然后在这里“开始使用Firebase数据库”https://firebase.google.com/docs/database/android/start/按照每条说明进行操作已经给出“检索数据”(3页之后),你将永远不会遇到这样的问题。 – Raj

你混合类(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' 
+0

主要'Firebase'参考我有这个:'import com.firebase.client.Firebase;'。这是错的吗?当我添加Firebase参考时,这是使用Alt + Enter键获得的唯一选项。 – user1406716

+0

Firebase未在新SDK中使用,由[FirebaseDatabase](https://developers.google.com/android/reference/com/google/firebase/database/FirebaseDatabase)和[DatabaseReference](https:/ /developers.google.com/android/reference/com/google/firebase/database/DatabaseReference)。 –

+0

这工作,谢谢。 – user1406716