Я пытаюсь сделать приложение для 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());
}
});
}
Когда я добавляю данные в базу данных, я ожидаю, что они появятся на странице входа в систему.
finish() вот и проблема
@JaiminModi да: E / StorageHelpers: не удалось превратить объект в JSON java.lang.NullPointerException: попытаться вызвать виртуальный метод org.json.JSONObject com.google.firebase.auth.internal.zzm.zzbf () при нулевом значении ссылка на объект
@KopiBryant нет, я уже удалил его и ничего не происходит :(
Какую версию firebase вы используете?
@buzzingsilently реализация 'com.google.firebase: firebase-database: 15.0.1' реализация 'com.google.firebase: firebase-auth: 15.1.0'
что-то там остается неинициализированным.
Я сделал точную программу, как и вы, однако я поместил свой регистрационный код в метод onClick вместо вызова метода и его работы. Вы можете подумать об этом. однако какое сообщение вы получили, я имею в виду тостовое сообщение




При обновлении Firebase до последней версии убедитесь, что вы также обновите свои сервисы Google Play.
В моем случае с Firebase 15+ мне пришлось установить сервис Google Play (в проекте gradle)
classpath 'com.google.gms:google-services:3.3.1'
Также попробуйте параметры приложения очистить данные и переустановить.
Пожалуйста, проголосуйте за этот ответ, если помогло. Удачного кодирования!
Есть ли у вас исключения?