'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