마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

파이어 베이스에서 값을 받아오면 처음에 null을 반영하던데 처음부터 값받으려면 어떻게해요?

0 추천
public String checkempty(int i){

        myRef.child("ChatRoom").child("room"+i).child("check").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                count=""+dataSnapshot.getValue();
            }

          
            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                count=""+dataSnapshot.getValue();
            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        return count;
    }

이 함수는 파이어베이스 트리에서 값을 받아오는 함수인데요 

 

if(checkempty(1).equal("1"){

}

 

이런식으로 조건문에 사용하고 앱 실행시키면 null이라서 바로 튕기더라고요

버튼추가해서 textview에다가 checkempty()값을 확인해 봤는데 처음 눌르면 null 두번째누를때부터 제대로 값을 받아오던데 어떻게 하면 좋을까요ㅜ

익명사용자 님이 2018년 10월 27일 질문

1개의 답변

0 추천
 
채택된 답변
firebase는 비동기 데이터베이스라 버튼클릭같은 ui작업 스레드에서 데이터를 받는다는 보장이 없는거로 알고있습니다. checkempty조건이 어떤걸 체크하는 구문인지는 모르겠지만 혹시 저 조건이 데이터베이스에 있는 값을 받아 비교하는 것이라면 리스너 안에서 조건을 체크해야 합니다.
익명사용자 님이 2018년 10월 27일 답변
감사해요 해결했습니다!!
...