2016-08-12 107 views
0

我正在嘗試使用代碼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

回答

3

你混合類(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