[英]In Android studio, if I tried to click account creation btn without filing the required fields, the app crashes
`
auth = FirebaseAuth.getInstance();
database = FirebaseFirestore.getInstance();
dialog = new ProgressDialog(this);
dialog.setMessage("We're creating new account...");
String email, pass, name, referCode;
email = binding.emailBox.getText().toString();
pass = binding.passwordBox.getText().toString();
name = binding.nameBox.getText().toString();
referCode = binding.referBox.getText().toString();
if((email!= null ) &&
( pass!= null) &&
(name != null) )
{
binding.createNewBtn.setEnabled(true);
}else{
binding.createNewBtn.setEnabled(false);
}
binding.createNewBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email, pass, name, referCode;
email = binding.emailBox.getText().toString();
pass = binding.passwordBox.getText().toString();
name = binding.nameBox.getText().toString();
referCode = binding.referBox.getText().toString();
final User user = new User(name, email, pass, referCode);
dialog.show();
auth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
String uid = task.getResult().getUser().getUid();
database
.collection("users")
.document(uid)
.set(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()) {
dialog.dismiss();
startActivity(new Intent(SignupActivity.this, MainActivity.class));
finish();
} else {
Toast.makeText(SignupActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
}
});
} else {
dialog.dismiss();
Toast.makeText(SignupActivity.this, task.getException().getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
});
` ** java.lang.IllegalArgumentException: Given String is empty or null at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@17.3.0 :5) at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@20.0.2:1) at com.james.tamilquiz.SignupActivity$1.onClick(SignupActivity.java:64 ) at android.view.View.performClick(View.java:8160) at android.widget.TextView.performClick(TextView.java:16222) at android.view.View.performClickInternal(View .java:8137) at android.view.View.access$3700(View.java:888) at android.view.View$PerformClick.run(View.java:30236) at android.os.Handler.handleCallback(Handler.java :938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8633) at java .lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.ZC31B323 64CE19CA8FCD150A417ECCE58Z.internal.os.ZygoteInit.main(ZygoteInit.java:1130) I/Process:發送信號。 PID:21407 SIG:9 **
您應該在創建用戶之前檢查必填字段是否為非空:
String email, pass, name, referCode;
email = binding.emailBox.getText().toString();
pass = binding.passwordBox.getText().toString();
name = binding.nameBox.getText().toString();
referCode = binding.referBox.getText().toString();
// Add these field controls
if (email == "") {
Toast.makeText(SignupActivity.this, "E-mail is required", Toast.LENGTH_SHORT).show();
return
}
if (pass == "") {
Toast.makeText(SignupActivity.this, "Password is required", Toast.LENGTH_SHORT).show();
return
}
final User user = new User(name, email, pass, referCode);
dialog.show();
auth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.