2017-12-03 2 views
0

Ich versuche, Datenwert in einer bestimmten Notiz in meiner Datenbank abzurufen. hier ist mein CodeDataSnapShot FirebaseDatabase gibt null zurück, warum?

 DatabaseReference ref =FirebaseDatabase.getInstance().getReference(USERID); 
    DatabaseReference refYear =ref.child(extractYear); 
    DatabaseReference refMonth =refYear.child(extractMonth); 
    DatabaseReference refDay =refMonth.child(extractDay); 
    refDay.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.getKey().equals(extractDay)){ 
       Log.i(TAG, dataSnapshot.getValue(String.class)); 
      } 
      else { 
       Log.i(TAG,"Failed to get value .."); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

und hier meine Feuerbasis Datenbank

{ 
    "k5yGCSKwjjXxnhCQGuy9jJzdIAu2" : { 
     "OverTime" : { 
       "2017" : { 
        "12" : { 
          "01" : "2", 
          "02" : "3", 
          "03" : "2", 
          } 
          } 
         } 

Aber der Code alway den Wert von dataSnapShot null geben. Ich weiß einfach nicht warum . Können Sie das bitte erklären? Danke

+0

bestimmten Tages Eintrag tun könnten, ist kein direkter Nachkomme des Monats ..... eher es ist Kind eine Karte von Tag/Zahlenwert ist. –

+0

, also mein Code nicht extraktisch auf die richtige Position zeigen? Ich bekomme deine Idee, aber weißt du nicht, wie ich das lösen soll? irgendein Tipp pls? – chickie8x

Antwort

0

Per Kommentar oben, Sie so etwas wie

 Map<String, String> map = (Map) dataSnapshot.getValue(); 
     if (map != null) { 
      String value = map.get("extractDay"); 
     } 
+0

immer noch null map sir – chickie8x

+0

nur zur Bestätigung .... wenn Sie den Breakpoint in 'onDataChange' setzen was json' dataSnapShot' enthält? –

+0

auch, sieht aus, als würden Sie 'OverTime' Kind verpassen? –

Verwandte Themen