5

Я совершенно новичок в Firebase и должен знать, как проверить, была ли моя задача записи успешной, потому что, если я этого не делаю, начинается MainActivity и заканчивается мой прогресс Register.Как проверить, успешно ли выполнено задание на запись в Firebase

Проверяется, если Username уже приняты и регистрирует пользователя, если это не так:

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(); 
    } 
}); 

Но я хочу Намерение Основная деятельность (карты) уволят только тогда, когда myRef.child("Users").child(Username).child("Userid").setValue(user.getUid());

и другой закончен своей задачей и является успешным.

Что я могу сделать?

+0

поставить слушателя на изменение значения, и при его изменении, то начните другую деятельность. – Blundell

ответ

17

Чтобы знать, когда операция записи завершена, добавить завершающий слушатель:

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); 
    } 
}); 

Если вы хотите написать в нескольких мест с помощью одной операции, вы хотите взглянуть на методе update(): https://firebase.google.com/docs/database/android/read-and-write#updating_or_deleting_data

правильная перегрузка для setValue() документирована здесь: https://firebase.google.com/docs/reference/android/com/google/firebase/database/DatabaseReference.html#setValue(java.lang.Object,%20com.google.firebase.database.DatabaseReference.CompletionListener)

+2

Но как я могу повторно присоединить 'DatabaseReference.CompletionListener' после изменений конфигурации (старая' Activity' была уничтожена и новая создана)? – Storix

+0

Если операция не удалась, будет выдана ошибка. Если он преуспел, ошибка будет равна нулю –

Смежные вопросы