java - 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。
我只是编程的初学者。
解决方案
不用担心,这很简单。当您走得更远时,将您的 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
推荐阅读
- java - 使用 Kendo api 日期选择器传递 LocalDateTime 数据的问题
- c# - Windows 窗体中的 PictureBox - 如何通过单击打开图像以全分辨率查看
- node.js - package.json 文件中的 man 指令有什么用?
- r - 如何将矩阵的第 (j,i)'th 与另一个矩阵中的第 i 列相乘以在 R 中生成 j 个矩阵?
- ruby-on-rails - 查找最后创建的记录 RSpec 测试
- postgresql - 使用 nodejs 在 Lambda 函数中从 RDS PostgreSQL 获取数据
- android - Yandex MapKit 3.0 崩溃
- vba - 未设置运行时 91 变量 - 在表单和模块之间共享变量
- r - 如何使用 filter 和 str_detect 将逻辑 AND 添加到逻辑 OR 的组合中?
- python - 在 VS Code 中使用 IPython REPL