Java.lang.illegalargumentexception: данная строка пуста или равна нулю при регистрации при нажатии

Всякий раз, когда я нажимаю на подписку, появляется ошибка java.lang.IllegalArgumentException:
Данная строка пуста или null продолжает появляться в журнале cat

Мой код

@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));
        }
    });

}

} Logcat

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())"

Я не знаю, как создать аргумент, в котором, если вы нажмете кнопку регистрации и адрес электронной почты && password is = null, отобразится тост, предлагающий пользователю ввести свой адрес электронной почты и пароль.

Я просто новичок в программировании.

Добавьте оператор if для проверки адреса электронной почты и пароля перед методом createUserWith ... Если это так, добавьте тост, чтобы проинформировать пользователя об этом, и вернитесь.

adickinson 31.10.2018 13:57
1
1
361
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не беспокойтесь, это довольно просто. Когда вы продвинетесь немного дальше, рассмотрите свой 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

Некоторые мелкие доработки, но ... Работает. Большое спасибо за помощь с моим проектом.

NotPat 31.10.2018 14:37

Без проблем. Рад помочь.

Sam 31.10.2018 14:40

Другие вопросы по теме