# #java #android #firebase #android-studio #listener
Вопрос:
Я пытаюсь внедрить базовую систему аутентификации Android с помощью Firebase. Ниже приведен мой код:
Toast.makeText(MainActivity.this, "BEFORE ON-COMPLETE", Toast.LENGTH_SHORT).show(); //this shows up
mAuth.signInWithEmailAndPassword(emailInputted, passInputted).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(MainActivity.this, "in OnComplete", Toast.LENGTH_SHORT).show(); //this does not show up
if(task.isSuccessful()){
Intent i = new Intent(MainActivity.this, Dashboard.class);
i.putExtra("EMAIL", emailInputted);
Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(i);
} else {
Toast.makeText(MainActivity.this, "Please check email/password", Toast.LENGTH_SHORT).show();
}
}
});
Toast.makeText(MainActivity.this, "after OnComplete", Toast.LENGTH_SHORT).show(); //this shows up
Я взял этот код из официальных документов Firebase, но по какой-то причине он не работает. onComplete
Метод по какой — то причине не вызывается. Я вижу тосты «до завершения» и «после завершения», но не «в завершенном». Я добавил пользователей в свою таблицу аутентификации в консоли firebase и уверен, что ввел правильный пароль.
После использования отладчика я увидел, что мой код просто пропускает onComplete()
метод и даже не доходит до isSuccessful()
метода. Как мне это исправить?
Заранее спасибо!
Комментарии:
1. Эй, вы пытались добавить
addOnCanceledListener
и поместить журнал или точку останова, чтобы узнать, не происходит ли что-то не так ? Например, пустой пропуск или электронное письмо2. @tperraut только что сделал,
onCanceledListner
не звонит. Я проверил статус Firebase на статус. firebase.google.com , но, кажется, в то время не было никаких известных проблем? Кроме того, я заранее проверяю пустые пароли/электронные письма. Я не думаю, что в этом проблема3. Что произойдет, если вы используете
createUserWithEmailAndPassword
вместо этого ?4. @tperraut только что попробовал это с помощью аналогичного кода.
Before onComplete
иAfter onComplete
произносятся тосты, но неin onComplete
тот. Кроме того, в моей таблице аутентификации не было создано ни одного пользователя.5.Просто чтобы убедиться, что вы уже добавили android.разрешение.ИНТЕРНЕТ в AndroidManifest.xml файл. Лол. Мне кажется странным указывать на это, но много раз мы забываем добавить это разрешение, и бесчисленные часы отладки бесполезны для такой тривиальной ошибки.
Ответ №1:
Следуйте этому, я надеюсь, вы получите свой ответ.
lBut = findViewById(R.id.log_btn);
lBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String a = usrn.getText().toString().trim();
String b = pswd.getText().toString().trim();
if (TextUtils.isEmpty(a) amp;amp; TextUtils.isEmpty(b)) {
usrn.setError("Empty Email !!");
pswd.setError("Empty Password !!");
lBut.setClickable(false);
} else {
lBut.setClickable(true);
mAuth.signInWithEmailAndPassword(a, b).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@SuppressLint("ShowToast")
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Successfully Login!!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(getApplicationContext(), HomeP.class);
ProgressBar prb = findViewById(R.id.progressBar);
prb.setVisibility(View.VISIBLE);
startActivity(i);
finish();
} else
Toast.makeText(getApplicationContext(), "Check Error And Try Again!!", Toast.LENGTH_SHORT).show();
}
});
}
}
});
Это событие на кнопке входа в систему, у вас больше сомнений, тогда ответьте мне.
Комментарии:
1. Нет. Это не работает 🙁 onComplete вообще не вызывается
2. Это называется завершенным, видите это ясно. и в завершенных функциях у меня есть сообщение о входе в систему
3. Теперь я должен предоставить вам весь исходный код java-файла ??
Ответ №2:
Так что он исправился сам собой после того, как я перезагрузил компьютер. Никаких изменений в коде. Может быть, Android Studio вела себя как-то странно.