2017-12-30 28 views
0

firebaseデータベース参照の子カウントを取得するときに問題があります。Firebase Datasnapshot for getChildrenCountが0に設定されています

私はこの変数は、次のようにのonCreateに設定されます

private long childs; 

を使用しています:私はdataSnapshotでこのコードをデバッグする場合、それは子供たちをカウントし、その正しいいる

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) { 

     } 
    }); 

、しかしときこのグローバル変数childsをファイル内の他の場所で使用すると、何とかゼロに設定されます。

+0

[ondatachangeメソッドから値を取得できません](https://stackoverflow.com/questions/38456650/cant-get-values-out-of-ondatachange-method) – SUPERCILEX

答えて

0

これは、onDataChange()メソッドが非同期と呼ばれるために発生しています。 childs変数をグローバル変数にして、クラス内の任意の場所で使用することはできません。これは、データベースからデータを取得する前でもonDataChange()メソッドが呼び出されたために発生しています。理解を深めるために、このpostから私の答えを見てください。

すぐに修正するには、childs変数の値をonDataChange()メソッド内でのみ使用してください。

+0

ありがとうございました。これは、onDataChange()内で自分のビューをセットアップするためにそれを解決しました。 –

関連する問題