Я проверяю, являются ли EditText
etEmail
и etPass
пустыми, прежде чем пытаться войти, но я не знаю, вызывает ли это проблему с моим тостовым сообщением, использующим firebase task.getException().getMessage()
Это сообщение об ошибке: вызов метода 'getMessage
' может привести к 'java.lang.NullPointerException'
Я пытался извлечь его из оператора else и перенести, это работает. У меня есть SignUp.class
, который работает как положено с firebase.getException().getMessage()
SignUp.class
не проверяет, являются ли EditTexts пустыми, поэтому, возможно, это как-то связано с проблемой.
Я создал метод, который возвращает true или false в зависимости от того, пусты ли EditTexts (passStr такой же, как etPass.getText().toString()
, но внутри оператора if 2-й всегда возвращает true или всегда false, поэтому я просто сделал это чтобы было проще, так как я не знал лучшего способа).
public Boolean checkEmpty(){
status = false;
passStr = etPass.getText().toString();
emailStr = etEmail.getText().toString();
if((etPass.getText().toString().isEmpty() && etEmail.toString().isEmpty()) ||
(passStr.isEmpty()) || (emailStr.isEmpty()) ) {
status = false;
}
else{
status = true;
}
return status;
}
Внутри метода onCreate он использует
if(checkEmpty().equals(true)) {
firebaseAuth.signInWithEmailAndPassword(
etEmail.getText().toString(),
etPass.getText().toString())
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//this starts activity if able to sign in
if (task.isSuccessful()) {
Toast.makeText(Login.this, "Login Successful",
Toast.LENGTH_LONG).show();
startActivity(new Intent(Login.this,
MainActivity.class));
}
else {
//if task unsuccessful it should show firebase toast messages
Toast.makeText(Login.this, task.getException().getMessage(),
Toast.LENGTH_LONG).show();
//this getMessage does not work due to error above
}
}
});
Затем используется другой оператор else, когда EditTexts пусты.
else {
progBar.setVisibility(View.INVISIBLE);
Toast.makeText(Login.this, "Please enter name and password",
Toast.LENGTH_LONG).show();
}