5

Tôi hoàn toàn mới đối với Firebase và cần biết cách kiểm tra xem tác vụ viết của tôi có thành công hay không, vì nếu tôi không làm vậy, MainActivity sẽ bắt đầu và làm rối loạn tiến trình Register của tôi.Cách kiểm tra xem tác vụ viết có thành công hay không trong Firebase

kiểm tra này nếu Username đã được sử dụng và đăng ký người sử dụng nếu nó không phải là:

Query usernamequery = myRef.orderByChild("Username").equalTo(Username); 

usernamequery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     if (snapshot.exists()) { 
      // TODO: handle the case where the data already exists 
      editText.setError("Username taken!"); 
      return; 
     } 
     else { 
      // TODO: handle the case where the data does not yet exist 
      myRef.child("Users").child(Username).child("Userid").setValue(user.getUid()); 
      myRef.child("Users").child(Username).child("Username").setValue(Username); 
      startActivity(maps); 
      finish(); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Toast.makeText(Username.this, "Error", Toast.LENGTH_LONG).show(); 
    } 
}); 

Nhưng tôi muốn tiếp cận mục đích để Hoạt động chính (bản đồ) chỉ được kích hoạt khi myRef.child("Users").child(Username).child("Userid").setValue(user.getUid());

và một trong những khác được hoàn thành với nhiệm vụ của mình và là thành công.

Tôi có thể làm gì?

+0

đưa người nghe về sự thay đổi giá trị, và khi nó thay đổi sau đó bắt đầu hoạt động khác của bạn. – Blundell

Trả lời

17

Để biết khi nào một hoạt động viết đã hoàn thành, thêm một người biết lắng nghe hoàn:

myRef.child("Users").child(Username).child("Userid").setValue(user.getUid(), new DatabaseReference.CompletionListener() { 
    void onComplete(DatabaseError error, DatabaseReference ref) { 
     System.out.println("Value was set. Error = "+error); 
    } 
}); 

Nếu bạn muốn gửi thư cho nhiều địa điểm với một thao tác đơn giản, bạn sẽ muốn xem xét phương pháp update(): https://firebase.google.com/docs/database/android/read-and-write#updating_or_deleting_data

các quá tải chính xác cho setValue() được ghi lại ở đây: https://firebase.google.com/docs/reference/android/com/google/firebase/database/DatabaseReference.html#setValue(java.lang.Object,%20com.google.firebase.database.DatabaseReference.CompletionListener)

+2

Nhưng làm cách nào tôi có thể đính kèm lại 'DatabaseReference.CompletionListener' sau khi thay đổi cấu hình (một' Hoạt động' cũ đã bị hủy và tạo mới)? – Storix

+0

Nếu hoạt động không thành công, sẽ xảy ra lỗi. Nếu nó đã thành công, lỗi sẽ là null –

Các vấn đề liên quan