4 回答
TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
我認(rèn)為錯誤非常明顯。調(diào)用getMessage()可能為 null,因為task.getException()可能返回 null。
在調(diào)用之前,您應(yīng)該確保任務(wù)異常不為空getMessage():
if (task.isSuccessful()) {
...
} else {
Throwable taskException = task.getException();
// Before invoking getMessage() on the exception,
// we make sure the exception is not null
if (taskException != null) {
Toast.makeText(Login.this, taskException.getMessage(), Toast.LENGTH_LONG).show();
}
}
為了您的信息,您可能還應(yīng)該在制作和顯示吐司之前檢查異常消息是否不為空。
TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊
您必須對方法進(jìn)行一些更改:-
這是檢查edittext是否為空:-
public Boolean checkEmpty(EditText edittext) {
if (edittext.getText().toString().isEmpty()){
return true;
}else{
return false;
}
}
這是在您的 onCreate 方法中:-
if(checkEmpty(etEmail)) {
Toast.makeText(StartActivity.this, "Email is empty", Toast.LENGTH_SHORT).show();
}else if(checkEmpty(etPass)){
Toast.makeText(StartActivity.this, "password is empty", Toast.LENGTH_SHORT).show();
}else {
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
}
}
});
}
TA貢獻(xiàn)1817條經(jīng)驗 獲得超14個贊
我已經(jīng)改進(jìn)了我的代碼,我非常感謝所有幫助我理解更多的答案。我已經(jīng)完全擺脫了該checkEmpty()方法,并選擇在我的 onClickListener 中定義每個 editText。
passStr = etPass.getText().toString();
emailStr = etEmail.getText().toString();
然后在 if 和 else if 語句中使用
if (**emailStr**.isEmpty())
else if (**passStr**.isEmpty())
帶有“請輸入密碼”和“請輸入電子郵件地址”的吐司消息。
注冊完成后(它使用 a.addOnCompleteListener(task)來檢查firebaseAuth.signInWithEmailAndPassword()),它會執(zhí)行以下操作:
if (task.isSuccessful()) {
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_LONG).show();
startActivity(new Intent(LoginActivity.this, Home.class));
} else {
Throwable taskException = task.getException();
if (taskException != null) {
Toast.makeText(LoginActivity.this, task.getException().getMessage(),
Toast.LENGTH_LONG).show();
}
}
因此,它在顯示 firebase toast 消息之前首先檢查輸入字段是否為空。我意識到我使用 checkEmpty 方法過于復(fù)雜了,因為我需要做的就是將每一個定義為 onClickListener 中的字符串。我不需要編寫新方法,因為我沒有在其他任何地方使用它。
添加回答
舉報
