首页 > 解决方案 > java.lang.IllegalArgumentException:给定字符串为空或 null onClick 注册

问题描述

每当我点击注册时,错误 java.lang.IllegalArgumentException:
Given String is empty or null 一直在日志猫上弹出

我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = findViewById(R.id.toolbar);
    progressBar = findViewById(R.id.progressBar);
    email = findViewById(R.id.etEmail);
    password = findViewById(R.id.etPassword);
    signup = findViewById(R.id.btnSignup);
    login = findViewById(R.id.btnLogin);
    forgotPass = findViewById(R.id.btnUserForgottPass);

    toolbar.setTitle(R.string.app_name);

    firebaseAuth = FirebaseAuth.getInstance();

    signup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            progressBar.setVisibility(View.VISIBLE);
                firebaseAuth.createUserWithEmailAndPassword(email.getText().toString(), password.getText().toString())
                        .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                progressBar.setVisibility(View.GONE);
                                if (task.isSuccessful()) {
                                    firebaseAuth.getCurrentUser().sendEmailVerification()
                                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    if (task.isSuccessful()) {
                                                        Toast.makeText(MainActivity.this, "Registered successfully. Please check your email for verification",
                                                                Toast.LENGTH_LONG).show();
                                                        email.setText("");
                                                        password.setText("");
                                                    } else {
                                                        Toast.makeText(MainActivity.this, task.getException().getMessage(),
                                                                Toast.LENGTH_LONG).show();
                                                    }
                                                }
                                            });

                                }
                            }
                        });
            }
    });


    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(MainActivity.this, LoginActivity.class));
        }
    });

    forgotPass.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(MainActivity.this, ForgotPasswordActivity.class));
        }
    });

}

} 日志猫

java.lang.IllegalArgumentException: Given String is empty or null
  at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(Unknown Source)at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source)
        at com.example.patrick.test.MainActivity$1.onClick(MainActivity.java:56) firebaseAuth.createUserWithEmailAndPassword(email.getText().toString(), password.getText().toString())"

我不知道如何创建一个参数,如果您单击注册按钮并且电子邮件 && 密码为 = null,它将显示提示用户输入其电子邮件和密码的 toast。

我只是编程的初学者。

标签: javaandroid

解决方案


不用担心,这很简单。当您走得更远时,将您的 onCreate 视为一个干净的启动位置,而不是用于连接按钮单击或处理事件。与此同时,让我们用你得到的东西来工作。

signup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
    progressBar.setVisibility(View.VISIBLE);
    String emailStr = email.getText().toString()
     String password = password.getText().toString()
      if(emailStr == null || emailStr.isEmpty()){
            Toast.makeText("Email must not be empty", Toast.LENGTH_SHORT).show();
      }else if(password == null || password.isEmpty(){
              Toast.makeText("Password must not be empty", Toast.LENGTH_SHORT).show();
      }else{
              firebaseAuth.createUserWithEmailAndPassword(email.getText().toString(), password.getText().toString())
                       .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            progressBar.setVisibility(View.GONE);
                            if (task.isSuccessful()) {
                                firebaseAuth.getCurrentUser().sendEmailVerification()
                                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task) {
                                                if (task.isSuccessful()) {
                                                    Toast.makeText(MainActivity.this, "Registered successfully. Please check your email for verification",
                                                            Toast.LENGTH_LONG).show();
                                                    email.setText("");
                                                    password.setText("");
                                                } else {
                                                    Toast.makeText(MainActivity.this, task.getException().getMessage(),
                                                            Toast.LENGTH_LONG).show();
                                                }
                                            }
                                        });

                            }
                        }
                    });
            }
        }

});

我只是复制了您的代码并直接在此处输入,因此如果有任何问题,那将是次要的。目标是将字符串变量与您的用户条目一起存储。然后验证它们不为空或不为空,当然,如果您有要求它们满足这些要求,然后再尝试发送。

如果您更喜欢提前退货,您也可以这样做

signup.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
          progressBar.setVisibility(View.VISIBLE);
          String emailStr = email.getText().toString()
          String password = password.getText().toString()
          if(emailStr == null || emailStr.isEmpty()){
                Toast.makeText("Email must not be empty", Toast.LENGTH_SHORT).show();
                return;
          }

          if(password == null || password.isEmpty(){
                  Toast.makeText("Password must not be empty", Toast.LENGTH_SHORT).show();
                  return;
          }

          //the rest of the firebase code

推荐阅读