Когда я пытаюсь обновить моего пользователя в базе данных Firebase по нажатию кнопки, мое приложение падает, но результаты отправляются в базу данных.
Моя функция обновления:
private void updateUser() {
final String firstname = et_firstname.getText().toString().trim();
final String lastname = et_lastname.getText().toString().trim();
final String number = et_number.getText().toString().trim();
if (firstname.isEmpty()) {
et_firstname.setError(getText(R.string.text_error_enter_firstname));
et_firstname.requestFocus();
return;
}
if (lastname.isEmpty()) {
et_lastname.setError(getText(R.string.text_error_enter_lastname));
et_lastname.requestFocus();
return;
}
if (number.isEmpty()) {
et_number.setError(getText(R.string.text_error_number));
et_number.requestFocus();
return;
}
User user = new User(firstname, lastname, firebaseUser.getEmail(), number);
databaseReference
.child(firebaseUser.getUid())
.setValue(user).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(container, getText(R.string.text_success_updated_profile), Toast.LENGTH_LONG).show();
}
});
}
Я объявил databaseReference в методе OnCreate:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
container = getActivity();
databaseReference = FirebaseDatabase.getInstance().getReference("Users");
}
firebaseUser также объявил:
firebaseUser = mAuth.getCurrentUser();
Я сделал функцию заполнения EditText, чтобы получить информацию о пользователе:
private void fillEditText() {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.child(firebaseUser.getUid()).getValue(User.class);
et_firstname.setText(user.getFirstname());
et_lastname.setText(user.getLastname());
et_number.setText(user.getContactno());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Мой класс пользователя:
public class User {
private String firstname, lastname, email, contactno;
public User() {
}
public User(String firstname, String lastname, String email, String contactno) {
this.firstname = firstname;
this.lastname = lastname;
this.email = email;
this.contactno = contactno;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getContactno() {
return contactno;
}
public void setContactno(String contactno) {
this.contactno = contactno;
}
}
Если я что-то изменил в EditText и нажал кнопку «Сохранить» - мое приложение зависло, если ничего не изменилось - появится сообщение Toast.