2 回答

TA貢獻1893條經驗 獲得超10個贊
這應該可以做到:
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
LayoutInflater inflater = LayoutInflater.from( SignUpActivity.this );
View toastview = inflater.inflate( R.layout.toast_registered, null );
Toast toast = new Toast( SignUpActivity.this );
toast.setView( toastview );
toast.setGravity( Gravity.CENTER, 0, 3 );
toast.setDuration( Toast.LENGTH_LONG );
toast.show();
}
else {
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
Toast.makeText(SignUpActivity.this, "toast1." + task.getException(),
Toast.LENGTH_SHORT).show();
}
else if (task.getException() instanceof FirebaseAuthUserCollisionException) {
Toast.makeText(SignUpActivity.this, "toast2." + task.getException(),
Toast.LENGTH_SHORT).show();
}
startActivity(new Intent(SignUpActivity.this, MainActivity.class));
finish();
}
}
});
因此,您檢查任務是否成功,如果沒有成功,則在開始注冊活動和完成此活動之前打開錯誤類型并顯示相應的 toast。

TA貢獻1890條經驗 獲得超9個贊
首先,您只需要一個條件,例如task.isSuccessful()。
你可以這樣做:
if(task.isSuccessful()) {
try {
throw task.getException();
} catch(FirebaseAuthInvalidCredentialsException e) {
/*Toast here*/
} catch(FirebaseAuthUserCollisionException e) {
/*Toast here*/
} catch(...) ...
}
和
...
throw task.getException();
...
你將拋出特定的異常并使用
} catch(FirebaseAuthInvalidCredentialsException e) {
/*Toast here*/
}
您將捕獲特定的異常來處理該異常并執行您想要的操作,在您的情況下,您將編寫代碼以在 catch 語句中顯示 toast。
請記住捕獲所有異常,否則當引發未處理的異常時,您的應用程序將崩潰。
您還可以處理通用異常:
if(task.isSuccessful()) {
try {
throw task.getException();
} catch(FirebaseAuthInvalidCredentialsException e) {
/*Toast here*/
} catch(FirebaseAuthUserCollisionException e) {
/*Toast here*/
} catch(Exception e) {
/*Handle generic exception*/
}
}
再見
添加回答
舉報