2017-12-30 12 views
0

Haben Sie ein Problem, wenn die Anzahl der Kinder für meine Firebase-Datenbankreferenz zählt.Firebase Datasnapshot für getChildrenCount setzt auf null

ich

private long childs; 

diese Variable verwende wird in onCreate wie folgt festgelegt:

ref_1 = new Firebase("https://xxxxxxxxxx-xxxxx.xxxxxxxxx.com/traning/crossfit/level"+condition); 
    ref_1.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      childs = dataSnapshot.getChildrenCount(); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

Wenn ich diesen Code debuggen am dataSnapshot es die Kinder gezählt und seine korrekte, aber wenn mit dieser globalen Variablen childs an anderen Stellen in der Datei ist irgendwie auf Null gesetzt.

+0

Mögliches Duplikat von [kann keine Werte aus der ontatachange-Methode abrufen] (https://stackoverflow.com/questions/38456650/cant-get-values-out-of-ondatachange-method) – SUPERCILEX

Antwort

0

Dies geschieht, weil onDataChange() Methode asynchron aufgerufen wird. Sie können nicht einfach childs Variable global machen und sie überall in Ihrer Klasse verwenden. Dies geschieht, weil die Methode onDataChange() aufgerufen wird, noch bevor Sie die Daten aus der Datenbank abrufen. Zum besseren Verständnis sehen Sie bitte meine Antwort aus dieser post.

Für eine schnelle Lösung, verwenden Sie einfach den Wert Ihrer childs Variable, nur innerhalb der onDataChange() Methode.

+0

Danke. Dies löste es, um meine Ansicht innerhalb der onDataChange() einzurichten, toll, danke. –

Verwandte Themen