2016-07-31 6 views
2

firebase를 백엔드 서비스로 사용하고 있습니다. firebase 데이터베이스에 데이터를 삽입하고 삽입이 성공했는지 여부를 확인하지만 항상 false를 반환하는지 확인합니다.Firebase isSuccessful() 항상 false를 반환합니다.

boolean issucessfull = ref.child("universities").setValue(university).isSuccessful(); 

      if (issucessfull) { 
       Toast.makeText(UniversityActivity.this, "added to database successfully", Toast.LENGTH_SHORT).show(); 
       clearViews(); 
       enableViews(true); 
      } else { 
       Toast.makeText(UniversityActivity.this, "Some error occured, try again", Toast.LENGTH_SHORT).show(); 
       enableViews(true); 
      } 

어떤 이유가있을 수 있습니까? 나는 그것을 디버깅했습니다. 데이터가 firebase에 추가되었지만 여전히 false입니다. 어떤 도움을 주시면 감사하겠습니다.

답변

7

Task이 아직 완료되지 않았으므로 대신 의 두 번째 매개 변수로 CompletionListener을 추가하십시오. 코드 위

ref.child("universities").setValue(university, new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if (databaseError != null) { 
      Toast.makeText(UniversityActivity.this, "Some error occured, try again", Toast.LENGTH_SHORT).show(); 
      enableViews(true); 
     } else { 
      Toast.makeText(UniversityActivity.this, "added to database successfully", Toast.LENGTH_SHORT).show(); 
      clearViews(); 
      enableViews(true); 
     } 
    } 
}); 

이 권장되는 방법입니다, 대안

Task<Void> task = new FireDatabaseRole().ref.setValue(university); 
task.addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> task) { 
     if (task.isSuccessful()) { 
      // success 
     } else { 
      // error 
     } 
    } 
}); 
입니다
관련 문제