2017-08-31 14 views
-1
private FirebaseAuth firebaseAuth=FirebaseAuth.getInstance();; 
private FirebaseUser firebaseUser=firebaseAuth.getCurrentUser(); 
/******************************After declaration**************************************/ 

    userIDDatabaseReference=FirebaseDatabase.getInstance().getReference("login"); 
    userIDDatabaseReference.child(firebaseUser.getUid()).addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.w("Show out:", "In Firebase ValueEventListener"); 
     LoginClass tempClass=dataSnapshot.getValue(LoginClass.class); 
      loginID=tempClass.getLoginID(); 
       } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      System.out.println("Database Error: "+databaseError.getDetails()); 
     } 
    }); 

enter image description here 動作しない私のコーディングですが、私はloginIDを取得したいが、log.wは私のlogcatですべてのログを印刷しないdid'tとしての私のイベントリスナーは発生しません。私はonDataChange()を起動しないので、loginIDのnullが返されるたびに関数がトリガーされないと思います。誰かが私に何が欠けているか教えてもらえるか?私は関連するすべてのドキュメントを参照しましたが、私は本当にここで何が問題か分かりません。は、上記

ありがとう~~

+0

あなたのuserIDDatabaseReferenceが "login"を指摘したのはなぜですか? –

+0

@AmineHarbaoui、ops、my fault、ログインノードからloginIDを取得すると仮定しました。下の図を参照してください。 –

+0

uidが同じかどうかをチェックし、onDataChange関数が呼び出されたかどうかを確認しますか?ログが出力されないので、 –

答えて

0

データを1回取得するには、単一の値イベントリスナーを使用してください。このコードを使用してください:

userIDDatabaseReference.child(firebaseUser.getUid()).addSingleValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     Log.w("Show out:", "In Firebase ValueEventListener"); 
    LoginClass tempClass=dataSnapshot.getValue(LoginClass.class); 
     loginID=tempClass.getLoginID(); 
      } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     System.out.println("Database Error: "+databaseError.getDetails()); 
    } 
}); 
+0

OK、これを試しますが、私の問題はイベントリスナーに関係していますか? –