-4

我正在开发注册功能,我需要在注册前进行一些验证。因此,当我检查所有 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 吗?

4

3 回答 3

0

这就是我检查 EditText 字段是否为空的方式。

public String checkInput(){
    email= username.getText().toString();
    if(email.equals("")){
        System.out.println("No email");
    }
 } 

这对我来说很好。

于 2013-08-01T08:04:04.623 回答
0

您的原始代码中实际上存在逻辑错误:

if (mFullName.getText().toString().equals("") && mEmail.getText().toString().equals("") && mPassword.getText().toString().equals("") && mPasswordAgain.getText().toString().equals("")){

如果此代码为真,则表示所有文本字段均为空,并且应向用户显示此处关于 的警告对话框"All fields are required"

而在您当前的代码中,您在else代码的一部分中显示了该警报。这在逻辑上是错误的。

于 2013-08-01T08:04:57.743 回答
-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
}

我相信这会奏效。

于 2013-08-01T08:00:25.980 回答