gpt4 book ai didi

java - 即使我在字段中输入一些数据,EditText 字段也被识别为空,因此程序不会继续进行

转载 作者:行者123 更新时间:2023-11-29 04:08:40 26 4
gpt4 key购买 nike

根据 logcat,即使在输入数据后,EditText 仍然为空。我已经尝试过类型转换,但仍然在没有 IF 语句的情况下运行 registerUser 函数时应用程序崩溃。我还检查了两个 EditText 字段的 ID,它们没问题。

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class MainActivity extends AppCompatActivity {
private EditText emailText;
private EditText passwordText;
private Button registerButton;
private TextView testView;
private FirebaseAuth userAuth;
private String email;
private String password;

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

emailText = findViewById(R.id.etext);
passwordText = findViewById(R.id.ptext);
registerButton = findViewById(R.id.rgsbutton);
userAuth = FirebaseAuth.getInstance();

email = emailText.getText().toString().trim();
password = passwordText.getText().toString().trim();

registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkInfo();
}
});
}

public void checkInfo() {
if (TextUtils.isEmpty(email)) {
Toast.makeText(this, "Email is required!",
Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(password)) {
Toast.makeText(this, "Password is required!",
Toast.LENGTH_SHORT).show();
} else {
registerUser();
}
}

private void registerUser() {
userAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new
OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(MainActivity.this,
"User registered succesfully!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this,
task.getException().getMessage(),
Toast.LENGTH_SHORT).show();
}
}
});
}
}

我希望电子邮件和密码是一些字符串,但实际输出为空。当我尝试运行带有 IF 语句的代码时,在单击按钮后,即使输入了电子邮件,我也会得到提示“需要电子邮件”。

最佳答案

您的 EditText 不为空,但实际上字符串变量 email 和 password 包含空值(非空值)。 null 和 empty 是有区别的。你的情况是当你启动应用程序时, onCreate() 被调用。

onCreate() 中,您正在初始化您的 View 。这是对的。但就在初始化 EditText 之后(此时 EditText 不包含任何值),您正在读取这些值。因此,您的 String 变量中有 Empty 值。

当单击按钮时,您将在该函数内调用函数 checkInfo(),您将检查您的电子邮件和密码是否为空。关键是您的电子邮件和密码始终为空,因为您没有在单击按钮时获取输入值。

所以简单的解决方案是在单击按钮时获取输入。因此,将输入代码移到您的函数检查信息中。

public void checkInfo() {
email = emailText.getText().toString().trim();
password = passwordText.getText().toString().trim();

if (TextUtils.isEmpty(email)) {
Toast.makeText(this, "Email is required!",
Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(password)) {
Toast.makeText(this, "Password is required!",
Toast.LENGTH_SHORT).show();
} else {
registerUser();
}
}

现在您可以毫无问题地进行下一步了。我希望你解释清楚。如果您仍然无法理解您的错误是什么,请告诉我。

谢谢你:)

关于java - 即使我在字段中输入一些数据,EditText 字段也被识别为空,因此程序不会继续进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com