기간이 많이 지나서 도움이 될지는 모르겠지만 남겨드려요.
1. 파이어베이스에서 리스너3종(데이터베이스에서 값을 가져오기 위해 쓰는)의 경우 getValue를 통해 가져온 값은 리스너 내에서만 유효한 형태로 전역변수로 해서 받으시면 null값이 뜹니다. 그래서 지역변수로 쓰시거나 콜백형태로 쓰셔야 값을 받아올수있습니다. 그 이유가 파이어베이스는 비동기 형식이라 그렇다고 합니다. 콜백 인터페이스 구현은 검색해보시면 많이 나오더라구요.
2. 저도 파이어베이스를 이용해 채팅앱을 만들때 신규가입시 아이디 중복확인을 위해 고민을 했었는데요, dataSnapshot.exists() 메소드는 데이터베이스 참조하는 부분에 해당 값이 존재하는지 아닌지를 구분하는 함수인데 이것을 이용하시면 되지않을까 생각됩니다.
=>저같은 경우
users노드 - UID노드 - email을 포함한 유저정보들 형태의 구조인데
Query query = DB참조경로.orderByChild("email).equalTo(입력값);
query.addListenerForSingleValueEvent(new ValueEventListener(){
@override
public void onDataChange(DataSnapshot datasnapshot){
boolean eamilIsExist = datasnapshot.exsists();
if(eamilIsExist){
Toast.makeText(getApplicationContext(), "이미 존재하는 이메일입니다",Toast.LENGTH_SHORT).show();
}
}
}
이런방법으로 중복체크를 하였습니다. 도움이 되길 바랍니다 ~!