Метод onComplete не работает


Я пытаюсь сделать приложение для 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());
        }
    });
}

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

Есть ли у вас исключения?

Jaimin Modi 21.05.2018 09:30
finish() вот и проблема
Kopi Bryant 21.05.2018 09:30

@JaiminModi да: E / StorageHelpers: не удалось превратить объект в JSON java.lang.NullPointerException: попытаться вызвать виртуальный метод org.json.JSONObject com.google.firebase.auth.internal.zzm.zzbf () при нулевом значении ссылка на объект

user7413881 21.05.2018 09:35

@KopiBryant нет, я уже удалил его и ничего не происходит :(

user7413881 21.05.2018 09:38

Какую версию firebase вы используете?

buzzingsilently 21.05.2018 09:39

@buzzingsilently реализация 'com.google.firebase: firebase-database: 15.0.1' реализация 'com.google.firebase: firebase-auth: 15.1.0'

user7413881 21.05.2018 09:40

что-то там остается неинициализированным.

Jaimin Modi 21.05.2018 09:47

Я сделал точную программу, как и вы, однако я поместил свой регистрационный код в метод onClick вместо вызова метода и его работы. Вы можете подумать об этом. однако какое сообщение вы получили, я имею в виду тостовое сообщение

Kopi Bryant 21.05.2018 10:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

В моем случае с Firebase 15+ мне пришлось установить сервис Google Play (в проекте gradle)

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

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

Пожалуйста, проголосуйте за этот ответ, если помогло. Удачного кодирования!

buzzingsilently 21.05.2018 10:52

Другие вопросы по теме