簡體   English   中英

在 Android 工作室中,如果我在未填寫必填字段的情況下嘗試單擊帳戶創建 btn,則應用程序崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM