'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.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) I/Process: Sending signal. PID: 21407 SIG: 9 **
Solution 1:[1]
You should check if the required field are non-empty before creating the user:
String email, pass, name, referCode;
email = binding.emailBox.getText().toString().trim();
pass = binding.passwordBox.getText().toString().trim();
name = binding.nameBox.getText().toString().trim();
referCode = binding.referBox.getText().toString().trim();
// 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>() {
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
