editText field is required before moving on to another Activity

98,638

Solution 1

It's easy...check if your EditText is empty as in below example below.

if( TextUtils.isEmpty(userName.getText())){
   /**
    *   You can Toast a message here that the Username is Empty    
    **/
    
   userName.setError( "First name is required!" );

}else{
   Intent i = new Intent(getApplicationContext(), Login.class);
   startActivity(i);
}

Here is a Kotlin version:

userName.takeIf { it.isEmpty() }?.let {
  userName.error = "First name is required!"
} ?: run {
   startActivity(Intent(applicationContext, this))
}

Solution 2

Try this:

bt.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0)
    {
        String  str=et.getText().toString();

        if(str.equalsIgnoreCase(""))
        {
            et.setHint("please enter username");//it gives user to hint
            et.setError("please enter username");//it gives user to info message //use any one //
        }
        else
        {
            Intent in=new Intent(getApplicationContext(),second.class);
            startActivity(in);
        }
    }
});

Solution 3

You can also try this:

 if ( ( userName.getText().toString().trim().equals("")) ) 
 {
      Toast.makeText(getApplicationContext(), "User name is empty", Toast.LENGTH_SHORT).show();
 }
 else
 {
      Intent i = new Intent(getApplicationContext(), Login.class);
      startActivity(i);
 }

Solution 4

I faced a similiar problem. In my case, I had a lot of Edittexts to verify, some them was child of another layouts. Tip: all views must be in same root view. So, to be simple:

...
LinearLayout viewGroup = (LinearLayout) findViewById(R.id.viewGroup);
checkFieldsRequired(viewGroup);
...

public boolean checkFieldsRequired(ViewGroup viewGroup){

    int count = viewGroup.getChildCount();
    for (int i = 0; i < count; i++) {
        View view = viewGroup.getChildAt(i);
        if (view instanceof ViewGroup)
            checkFieldsRequired((ViewGroup) view);
        else if (view instanceof EditText) {
            EditText edittext = (EditText) view;
            if (edittext.getText().toString().trim().equals("")) {                  
                edittext.setError("Required!");                 
            }
        }
    }

    return false;
}

Solution 5

I understand it's an old question but may this helps, you can use .isEmpty() instead of .equals()

if( userName.getText().toString().isEmpty()){

   /**
    *   You can Toast a message here that the Username is Empty    
    **/

   userName.setError( "First name is required!" );

}else{
   Intent i = new Intent(getApplicationContext(), Login.class);
   startActivity(i);
}
Share:
98,638
Krishna Veni
Author by

Krishna Veni

Updated on January 07, 2022

Comments

  • Krishna Veni
    Krishna Veni over 2 years

    I have validation for editText. If the editText field is empty it should fail validation and stop the user moving on to another Activity, as a value is required. How to do it? I know this is a basic question, but I can't figure out how to do this.

    My code:

    btninsert = (Button)findViewById(R.id.btn_insert);
    btninsert.setOnClickListener( new View.OnClickListener() {
        public void onClick(View v) {
            insertValues();
            EditText userName = (EditText) findViewById(R.id.editText1);
    
            if( userName.getText().toString().length() == 0 )
                userName.setError( "First name is required!" );
    
            Intent i = new Intent(getApplicationContext(), Login.class);
            startActivity(i);
        }
    });
    

    When this Button is clicked the user is redirect to next screen, but I need that if validation fails they stay on the current Activity, and only when validation is successful (i.e. a value has been entered) they go to the next Activity.