Я использую Firebase для регистрации своих пользователей и требую аутентификации для перехода на домашний экран с использованием метода signInWithEmailAndPassword()
и Intent
.
Аутентификация работает нормально, она успешно входит в систему для моих пользователей, НО проблема в том, что когда аутентификация прошла успешно и HomeActivity
запускается, действие продолжает бесконечно воссоздавать и экран остается черным.
Я пробовал много способов сделать Intent
, чтобы перейти от MainActivity
к HomeActivity
после входа в систему, но этот бесконечный цикл продолжает происходить.
Странно то, что если закрыть приложение, пока экран черный, «Force Stop», а затем снова открыть приложение, приложение сразу перейдет к HomeActivity
. HomeActivity
содержит FrameLayout
с Fragment
.
У меня есть правильная реализация Gradle для Firebase.
Вот как MainActivity.java
и OnStart()
и attemptLogin()
выглядят так:
private void attemptLogin() {
String email = Objects.requireNonNull(mEditTextUsername.getText()).toString().trim();
String password = Objects.requireNonNull(mEditTextPassword.getText()).toString().trim();
if (email.isEmpty() || password.isEmpty()) {
mInputLayoutUsername.setError(getString(R.string.error_emptySpace));
mInputLayoutPassword.setError(getString(R.string.error_emptySpace));
return;
}
mProgressBar.setVisibility(View.VISIBLE);
mEnterButton.setVisibility(View.INVISIBLE);
// Use Auth to sign in with email & password
mAuth.signInWithEmailAndPassword(email, password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
startActivity(new Intent(MainActivity.this, HomeActivity.class));
finish();
}
});
}
@Override
protected void onStart() {
super.onStart();
mUser = mAuth.getCurrentUser();
if (mUser != null) {
Log.d(TAG, "onCreate: Going home because mUser is not null");
startActivity(new Intent(MainActivity.this, HomeActivity.class));
finish();
}
}
В Logcat эти строки кода повторяются вечно (некоторые из них я использую как журналы отладки, как будто один из Домов был создан и Фрагмент)
D/HomeActivity: onCreate: Home has been created
D/HomeActivity: onCreate: Fragment placed correctly
V/FA: Activity resumed, time: 25049213
V/FA: Screen exposed for less than 1000 ms. Event not sent. time: 9
V/FA: Activity paused, time: 25049222
V/FA: onActivityCreated
Внутри HomeActivity
Я вообще не использую recreate()
.
Спасибо за ваши ответы. Я надеюсь, что вы можете помочь мне сделать так, чтобы приложение перешло прямо из MainActivity
в HomeActivity
без его воссоздания навсегда