Данные обновляются в Firebase, но приложение падает на Android - PullRequest
0 голосов
/ 04 мая 2019

Когда я пытаюсь обновить моего пользователя в базе данных 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...