2017-11-25 159 views
0

我正在爲我的Android應用使用Firebase。在下面的代碼,Android Studio Firebase「沒有這樣的實例字段」錯誤

DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference(); 
matchReference = rootReference.child("tournaments"); 
userReference = rootReference.child("Users").child(deviceID); 

    userReference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for(DataSnapshot snapshot : dataSnapshot.getChildren()) { 

       if(snapshot.child(matchList.get(position).getId()).exists()) { 

        //If the user has Starred this game 

        isStarred = true; 

       } else { isStarred = false; } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

我得到的userReference領域"No Such instance field"錯誤。當我調試它時,它給了我正確的數據庫路徑,但它不會進入addValueEventListener函數。

我的數據庫看起來像

enter image description here

,並呼籲 「starredGames」 另一個孩子將在我的代碼被添加。

爲什麼它給了我錯誤?

+0

是您'userReference'應該是你的'matchReference'的孩子,而不是'rootReference'?你能否更詳細地展示你的Firebase結構? – timothyclifford

回答

0

讓你deviceID價值的正確方法是:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference deviceIDRef = rootRef.child("Users").child("6610609cfc2c7945"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String deviceID = dataSnapshot.child("deviceID").getValue(String.class); 
     Log.d("TAG", deviceID); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
deviceIDRef.addListenerForSingleValueEvent(eventListener);