为什么edittext getText什么都不返回?

时间:2013-08-01 07:36:39

标签: android

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

3 个答案:

答案 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
}

我相信这会奏效。