2016-08-12 34 views
0

コードstraight from their documentationを使用してfirebaseデータベースから読み込もうとしています。私の下に私のコードがあり、Firebase reference変数にValueEventListenerを追加しようとすると、次のエラーが表示されます。Firebaseからの読み込みエラーError:ValueEventListener

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 

} 

enter image description here

UPDATE: はまだ全体のクラス名を使用した後、同じ問題の前夜を持つ:com.google.firebase.database.ValueEventListener postListener = new com.google.firebase.database.ValueEventListener() { ... }

enter image description here

+0

は完全にクラス名を修飾するようにしてくださいをpostListener =新しいcom.google.firebase.database.ValueEventListener(){...} 'を実行し、この問題が解決されるかどうかを確認します。 –

+0

まだエラーが発生しています。私が見ているエラーで質問を更新しました。 'ref'変数は' com.google.firebase.database.ValueEventListener'の代わりに 'com.google.firebase.client.ValueEventListener'を期待しています – user1406716

+0

このリンクから起動すると、「firebase sdkをインストールしてください」https: //firebase.google.com/docs/android/setup 、次に「firebaseデータベースを使い始める」https://firebase.google.com/docs/database/android/start/すべての指示に従ってリンクしてください「データを取得する」(3ページ後)というような問題で決して実行されることはありません。 – Raj

答えて

3

あなたはレガシー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' 

ないが含まれている必要があります `com.google.firebase.database.ValueEventListener:

compile 'com.firebase:firebase-client-android:2.5.0' 
+0

主な 'Firebase'リファレンスには、' import com.firebase.client.Firebase; 'があります。これは間違っていますか?これはFirebase Referenceを追加するときに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

関連する問題