我正在验证我的 EditText
内容,
我用过验证我的 EditText
内容
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if( enteredUserName != " " && enteredPassword != " " ) {
createNewAccount();
}
但上面对我不起作用,那么我看到了这个的解决方案,
if( enteredUserName.length() != 0 && enteredPassword.length() != 0 ) {
createNewAccount();
}
它对我来说很完美
我的问题是,为什么我的第一个代码片段不起作用,而我在java中使用上面的代码进行验证 . 谢谢
Edit2
setContentView( R.layout.create_account_activity_layout );
btn = ( Button ) findViewById( R.id.create_account_btn );
userName = ( EditText ) findViewById( R.id.name );
userPassword = ( EditText ) findViewById( R.id.password );
enteredUserName = userName.getText().toString().trim();
enteredPassword = userPassword.getText().toString().trim();
userName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
userPassword.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
Edit3
String enteredUserName;
String enteredPassword;
@Override
protected void onCreate( Bundle savedInstanceState ) {
// TODO Auto-generated method stub
super.onCreate( savedInstanceState );
setContentView( R.layout.create_account_activity_layout );
btn = ( Button ) findViewById( R.id.create_account_btn );
userName = ( EditText ) findViewById( R.id.name );
userPassword = ( EditText ) findViewById( R.id.password );
enteredUserName = userName.getText().toString().trim();
enteredPassword = userPassword.getText().toString().trim();
userName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
enteredUserName = userName.getText().toString();
enteredPassword = userPassword.getText().toString();
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
userPassword.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
enteredUserName = userName.getText().toString();
enteredPassword = userPassword.getText().toString();
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
/*while( enteredUserName.toString().isEmpty() || enteredPassword.toString().isEmpty() ) {
Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
userName = ( EditText ) findViewById( R.id.name );
userPassword = ( EditText ) findViewById( R.id.password );
enteredUserName = userName.getText().toString().trim();
enteredPassword = userPassword.getText().toString().trim();
}*/
/* while( userName.getText().toString().equals("") && userPassword.getText().toString().equals("") ) {
Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
}*/
btn.setOnClickListener( this );
}
Edit4
protected void onCreate( Bundle savedInstanceState ) {
// TODO Auto-generated method stub
super.onCreate( savedInstanceState );
setContentView( R.layout.create_account_activity_layout );
btn = ( Button ) findViewById( R.id.create_account_btn );
userName = ( EditText ) findViewById( R.id.name );
userPassword = ( EditText ) findViewById( R.id.password );
//enteredUserName = userName.getText().toString().trim();
//enteredPassword = userPassword.getText().toString().trim();
TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if (enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0) {
Toast.makeText(CreateAccountActivity.this, "test", Toast.LENGTH_LONG).show();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
userName.addTextChangedListener(textWatcher);
userPassword.addTextChangedListener(textWatcher);
/*
userName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
enteredUserName = userName.getText().toString();
enteredPassword = userPassword.getText().toString();
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
userPassword.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
enteredUserName = userName.getText().toString();
enteredPassword = userPassword.getText().toString();
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
*/
/*while( enteredUserName.toString().isEmpty() || enteredPassword.toString().isEmpty() ) {
Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
userName = ( EditText ) findViewById( R.id.name );
userPassword = ( EditText ) findViewById( R.id.password );
enteredUserName = userName.getText().toString().trim();
enteredPassword = userPassword.getText().toString().trim();
}*/
/* while( userName.getText().toString().equals("") && userPassword.getText().toString().equals("") ) {
Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
}*/
btn.setOnClickListener( this );
}
7 回答
试试这个:
您的第一个解决方案不起作用,因为您尝试将文本实例与仅包含一个空格的String实例进行比较 .
第二种解决方案是可行的,但是如果用户将写入空格,则将验证条件,因此在检查条件之前,您应该
trim()
,如下面的代码所示:trim()
方法从String
删除白色标记或者您可以使用String类中的方法
isEmpty()
如果您想要识别用户在
EditText
上更改文本的情况,您应该使用TextWatcher
,如下面的代码所示:添加TextWatcher,如我为
userName
和userPassword
所示EDIT
将onCreate方法更改为以下方法:
比较字符串你必须这样做:
为了比较字符串总是使用方法equals()或equalsIgnoreCase()如果大写字母不重要
你做了字符串比较=这是不可能的 - 只需使用
试试这个
此外
阅读本文档http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
其他方案
你不能用!=来比较字符串,你不能把它与它比较:
if(enteredUserName.equals("") && enteredPassword.equals(""))
if(enteredUserName.toString().isEmpty() && enteredPassword.toString().isEmpty()
if(enteredUserName.matches("") && enteredPassword.matches("")
比较它有很多可能性,但那些是最正确的IMO .
希望能帮助到你 :)
EDIT
如果你想使用长度一种方式使用它将是:
EDIT2
尝试这个逻辑,让我知道它是否有效 .
你应该用