Intent не переносит на другой activity при верификации почты
package com.example.testapp;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.Firebase;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class MainActivity2 extends AppCompatActivity {
private EditText usernameReg;
private EditText passwordReg;
private Button buttonR;
private FirebaseAuth firebaseR;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
firebaseR = FirebaseAuth.getInstance();
usernameReg = findViewById(R.id.editTextReg);
passwordReg = findViewById(R.id.editTextReg1);
buttonR = findViewById(R.id.buttonReg);
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null && user.isEmailVerified()) {
redirectToMainActivity4();
}
}
};
buttonR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (usernameReg.getText().toString().isEmpty() || passwordReg.getText().toString().isEmpty()) {
Toast.makeText(MainActivity2.this, "Fields cannot be empty", Toast.LENGTH_SHORT).show();
}
else {
firebaseR.createUserWithEmailAndPassword(usernameReg.getText().toString(), passwordReg.getText().toString())
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
verifyEmail();
}
}
});
}
}
});
}
private void redirectToMainActivity4() {
Intent intent = new Intent(MainActivity2.this, MainActivity4.class);
startActivity(intent);
}
private void verifyEmail() {
assert usernameReg != null;
FirebaseUser user = firebaseR.getCurrentUser();
assert user != null;
user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(MainActivity2.this, "На вашу электронную почту отправлено письмо для верификации", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(MainActivity2.this, "Ошибка: Письмо не отправлено", Toast.LENGTH_SHORT).show();
}
}
});
}
}
Ответы (1 шт):
Автор решения: iramm
→ Ссылка
Переменная authStateListener нигде не используется.
Этот слушатель нужно добавить в onStart() и удалить в onStop().
Что-то вроде:
@Override
protected void onStart() {
super.onStart();
firebaseR.addAuthStateListener(fireAuthListener);
}
@Override
protected void onStop() {
super.onStop();
if(fireAuthListener != null){
firebaseR.removeAuthStateListener(fireAuthListener);
}
}