java - 即使我在字段中输入了一些数据,EditText 字段也被识别为空,因此程序不会继续进行
问题描述
根据 logcat,即使在输入数据后 EditText 仍然为空。我已经尝试过类型转换,但是当 registerUser 函数在没有 IF 语句的情况下运行时,应用程序仍然崩溃。我还检查了两个 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 语句运行代码时,单击按钮后,即使输入了电子邮件,我也会收到“需要电子邮件”的祝酒词。
解决方案
从 onCreate()移动email = emailText.getText().toString().trim(); password = passwordText.getText().toString().trim();
到 checkInfo()。
推荐阅读
- java - Gradle reimport 不断重置我的 intellij 项目 java 级别
- java - 如何以及在哪里安装 java 7?
- javascript - 从 fetch 获取数据时使用状态变量进行 React-native
- swift - 在 Swift 中的 UserDefaults 中存储日期
- json - 在 null 上调用了方法“[]”。接收者:null 尝试调用:[](0) !我在这里做错了什么?
- mysql - MySQL - 你如何重写它以使用 ONLY_FULL_GROUP_BY
- r - Rails - 在临时表上创建和操作?
- jdbc - DB2 JDBC Windows 身份验证
- html - 如何在表格上创建圆角并为整个表格和列保留表格边框?
- sql - 如何在 PostgreSQL 上存储 MM/YYYY 日期?