Метод onComplete не работает - PullRequest
0 голосов
/ 21 мая 2018


Я пытаюсь сделать приложение для Android.
Приложение должно иметь форму входа и регистрации, и я не могу понять, почему метод onComplete не работает, но данные добавляются в базу данных на странице регистрации.
Вот код:

private void submitForm(String email, String password){
    auth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    FirebaseAuthException e = (FirebaseAuthException)task.getException();
                    if(task.isSuccessful()){
                        Toast.makeText(RegisterActivity.this, "Registration successfully!", Toast.LENGTH_SHORT).show();
                        startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
                        finish();
                    }else{
                        Toast.makeText(RegisterActivity.this, "" +e.getMessage(),
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
}

private void validate(String email, String password, String confirmPassword){
    if(!TextUtils.isEmpty(email)) {
        if (android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            if ((!TextUtils.isEmpty(password)) && (!TextUtils.isEmpty(confirmPassword))) {
                if (!password.equals(confirmpassword)) {
                    if(password.length() > 6){
                        submitForm(email, password);
                    }else{
                        Toast.makeText(this, "Password must be at least 6 characters.", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(this, "Passwords do not match.", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(this, "Please fill in both password fields.", Toast.LENGTH_SHORT).show();
            }
        }else{
            Toast.makeText(this, "Please enter a valid email address.", Toast.LENGTH_SHORT).show();
        }
    }else {
        Toast.makeText(this, "Please fill the email field.", Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    auth = FirebaseAuth.getInstance();
    email = findViewById(R.id.emailEditText);
    password = findViewById(R.id.passwordEditText);
    confirmpassword = findViewById(R.id.confirmpasswordEditText);
    register = findViewById(R.id.registerbutton);

    register.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            validate(email.getText().toString(), password.getText().toString(), confirmpassword.getText().toString());
        }
    });
}

Когда я добавляю данные в базу данных, я ожидаю, что они попадут на страницу входа.

1 Ответ

0 голосов
/ 21 мая 2018

При обновлении Firebase до последней версии убедитесь, что вы также обновили свои сервисы google play .

В моем случае с Firebase 15+ мне пришлось настроить сервис google play (в режиме проекта)

classpath 'com.google.gms:google-services:3.3.1'

Также попробуйте очистить данные & переустановить опции приложения.

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