Reputation: 180
I was validating my EditText
contents,
I used validating my EditText
contents using
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if( enteredUserName != " " && enteredPassword != " " ) {
createNewAccount();
}
but above did't work for me, then i see a solution of this,
if( enteredUserName.length() != 0 && enteredPassword.length() != 0 ) {
createNewAccount();
}
It worked perfectly for me
My question is, why my first code snippet not worked, while i have used above code for validation in java. Thanks
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 );
}
Upvotes: 0
Views: 724
Reputation: 117
You should use
if ( !TextUtils.isEmpty("enteredUserName")) {
// createNewAccount();
}
Upvotes: 0
Reputation: 12365
Your first solution didn't work because you try to compare instance of your text with instance of String which contains only one space.
The second solution will work, but if user will write space the condition will be validated, so you should trim()
your string before you check the condition as is shown in code below:
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
the trim()
method remove white marks from your String
Or you can use method isEmpty()
from String class
If you want to recognise situation where user change text on EditText
you should use TextWatcher
as is shown in code below:
editText.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) {
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
createNewAccount();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Add TextWatcher as I shown for userName
and userPassword
EDIT
Change your onCreate method to the method below:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_account_activity_layout);
Button btn = (Button) findViewById( R.id.create_account_btn );
final EditText userName = (EditText) findViewById(R.id.name);
final EditText userPassword = (EditText) findViewById(R.id.password);
userName.addTextChangedListener(textWatcher);
userPassword.addTextChangedListener(textWatcher);
btn.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if (enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0) {
createNewAccount();
}else{
Toast.makeText(MainActivity2.this, "Fill both fields", Toast.LENGTH_LONG).show();
}
}
});
}
Upvotes: 2
Reputation: 20616
You can not compare strings with !=, it's not good idea you can compare it with :
-if(enteredUserName.equals("") && enteredPassword.equals(""))
-if(enteredUserName.toString().isEmpty() && enteredPassword.toString().isEmpty()
-if(enteredUserName.matches("") && enteredPassword.matches("")
There are a lot of posibilities to compare it, but those are the most correct IMO.
Hope it helps :)
EDIT
If you want to use length one way to use it would be like :
if (enteredUserName.getText().length() == 0) && (enteredPassword.getText().length() == 0)
EDIT2
Try this logic and let me know if it works.
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
Boolean ok;
ok = false;
while (!ok) {
if (!enteredUserName.equals("") && !enteredPassword.equals("")){
ok = true;
createNewAccount();
//user and password are not empty or you can do your
}
else {
//do something to repeat this, because user or password is empty
}
}
Upvotes: 0
Reputation: 358
Try this:
String enteredUserName = userName.getText().toString().trim();
String enteredPassword = userPassword.getText().toString().trim();
if( !enteredUserName.equalsIgnoreCase("")
&& !enteredPassword.equalsIgnoreCase("") )
{
createNewAccount();
}
Upvotes: 0
Reputation: 1808
Try this
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if( !enteredUserName.equals("") && !enteredPassword.equals("") ) {
createNewAccount();
}
In addition
Read this document http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
Other solution
String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();
if( !enteredUserName.isEmpty() && !enteredPassword.isEmpty() ) {
createNewAccount();
}
Upvotes: 0
Reputation: 9870
To compare Strings You have to do it like this:
if( !enteredUserName.equals(" ") && !enteredPassword.equals(" ") ) {
createNewAccount();
}
For comparing Strings allways use the method equals() or equalsIgnoreCase() if the capital letters are not important
Upvotes: 1
Reputation: 5464
You did String comparision by = which is not possible - just use
if(!enteredUserName.equals("") && !enteredPassword.equals(""))
Upvotes: 0