我正在开发注册功能,我需要在注册前进行一些验证。因此,当我检查所有editText null时,它只是不起作用。我无法理解为什么。
这里是代码
public class RegisterActivity extends Activity implements View.OnClickListener {
private AlertDialogManager alert = new AlertDialogManager();
private EditText mFullName;
private EditText mEmail;
private EditText mPassword;
private EditText mPasswordAgain;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
init();
}
private void init() {
findViewById(R.id.registerButton).setOnClickListener(this);
mFullName = (EditText)findViewById(R.id.registerFullName);
mEmail = (EditText)findViewById(R.id.registerEmail);
mPassword = (EditText)findViewById(R.id.registerPassword);
mPasswordAgain = (EditText)findViewById(R.id.registerPasswordRetype);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.registerButton:
System.out.println("fullname="+mFullName.getText());
System.out.println("email="+mEmail.getText());
System.out.println("emailString="+mEmail.getText().toString());
if (mFullName.getText().toString().equals("") && mEmail.getText().toString().equals("") && mPassword.getText().toString().equals("") && mPasswordAgain.getText().toString().equals("")){
if (Utils.isValidEmail(mEmail.getText().toString())){
if (Utils.checkPassWordAndConfirmPassword(mPassword.getText().toString(), mPasswordAgain.getText().toString())){
register();
} else {
alert.showAlertDialog(RegisterActivity.this, "Error",
"Password doesn't match", false);
}
} else {
alert.showAlertDialog(RegisterActivity.this, "Error",
"Wrong email", false);
}
} else {
alert.showAlertDialog(RegisterActivity.this, "Error",
"All fields are required", false);
}
break;
}
}
}
单击按钮时,您会看到System.out.println。我也把它放在这里,但是
08-01 11:34:46.830: INFO/System.out(10434): fullname=
08-01 11:34:46.830: INFO/System.out(10434): email=
08-01 11:34:46.830: INFO/System.out(10434): emailString=
如果getText为空,则不会打印null吗?
答案 0 :(得分:0)
这是我检查EditText字段是否为空的方法。
public String checkInput(){
email= username.getText().toString();
if(email.equals("")){
System.out.println("No email");
}
}
这对我来说很好。
答案 1 :(得分:0)
原始代码中确实存在逻辑错误:
if (mFullName.getText().toString().equals("") && mEmail.getText().toString().equals("") && mPassword.getText().toString().equals("") && mPasswordAgain.getText().toString().equals("")){
此代码如果为true则表示所有文本字段均为空,并且应在此处向用户显示有关"All fields are required"
的警告对话框。
而在您当前的代码中,您在代码的else
部分中显示了该警报。这在逻辑上是错误的。
答案 2 :(得分:-2)
按照@Pankaj Kumar的回答,我得出结论......
if (TextUtils.isEmpty(mFullName.getText()) &&
TextUtils.isEmpty(mEmail.getText()) &&
TextUtils.isEmpty(mPassword.getText()) &&
TextUtils.isEmpty(mPasswordAgain.getText())) {
alert.showAlertDialog(RegisterActivity.this, "Error",
"All fields are required", false);
} else {
//do another validation
}
我相信这会奏效。