2017-12-30 34 views
0

내 firebase 데이터베이스 참조에 대한 자식 수를 계산할 때 문제가 있습니다. 내가이 아이들을 계산하고 올바른 한 dataSnapshot에서이 코드를 디버깅하는 경우Firebase getChildrenCount의 Datasnapshot이 0으로 설정됩니다.

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

     } 
    }); 

하지만 때 나는

private long childs; 

이 변수를 사용하고

이 같은에서 onCreate에서 설정됩니다 이 전역 변수 childs를 파일의 다른 위치에서 사용하면 어떻게 든 0으로 설정됩니다.

+0

가능한 복제본 [ondatachange 메소드에서 값을 가져올 수 없음] (https://stackoverflow.com/questions/38456650/cant-get-values-out-of-ondatachange-method) – SUPERCILEX

답변

0

onDataChange() 메서드가 비동기라고되어 있기 때문에 이러한 현상이 발생합니다. childs 변수를 전역으로 간단하게 만들 수 없으며 클래스에서 원하는 곳 어디에서나 사용할 수 있습니다. 데이터베이스에서 데이터를 가져 오기 전에도 onDataChange() 메서드가 호출되기 때문에 이러한 현상이 발생합니다. 더 나은 이해를 위해서, 내 대답은 post에서보십시오.

빠른 수정을 위해 childs 변수의 값을 onDataChange() 메소드 내부에서만 사용하십시오.

+0

감사합니다. 이것은 onDataChange() 내에서 내보기를 설정하는 데 해결, 위대한, 감사합니다. –