2013-08-01 55 views
-4

我正在开发注册功能,我需要在注册之前做一些验证。所以当我检查是所有editText null它只是不起作用。我无法理解为什么。为什么editext getText不会返回任何内容?

这里的代码

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?

+1

你应该使用gettext()。tostring()。 –

+0

没有试过它不起作用 – bauer9664

+0

为什么你需要打印空?你可以这样做: getText()。toString.length()> = 1或 if(getText()。toString()!=“”) - >如果在edittext中为空文本。 你是第一个期待得到空! – Charan

回答

-2

继@Pankaj库马尔答案我来总结......

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 
} 

我敢肯定,将工作。

+0

oo谢谢,我在等待。 – bauer9664

+0

gud工作!但我仍然在看我的答案中有什么问题..:D –

0

这是我如何检查EditText字段是否为空。

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

这对我来说很好。

0

实际上有一个在你原来代码中的逻辑错误:

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

此代码,如果真的意味着所有的文本字段是空的,用户应显示在这里约"All fields are required"警报对话。

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

相关问题