2012-07-18 13 views
15

Tengo validación para editText. Si el campo editText está vacío, debe fallar la validación y detener al usuario para pasar a otro Activity, ya que se requiere un valor. ¿Cómo hacerlo? Sé que esta es una pregunta básica, pero no puedo entender cómo hacer esto.editEl campo de texto es obligatorio antes de pasar a otra actividad

Mi código:

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); 
    } 
}); 

Cuando esto Button se hace clic el usuario es redirigir a la siguiente pantalla, pero necesito que si falla la validación permanecen en la corriente Activity, y sólo cuando validación es correcta (es decir, una el valor ha sido ingresado) van al siguiente Activity.

Respuesta

39

Es fácil ... compruebe si su EditText está vacío como en el siguiente ejemplo a continuación.

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); 
} 
6

Prueba esto:

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); 
     } 
    } 
}); 
4

También puede probar esto:

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); 
} 
1

mejor probar textField vacío usando Si la condición para todos los casos de validación necesarias o especiales y setError para enfocar.

If(txtName.getText().toString().trim().equals("")) 
{ 
//Your message or any other validation 
} 
0

Me enfrenté a un problema similar. En mi caso, tuve un montón de Edittexts para verificar, algunos eran hijos de otros diseños. Consejo: todas las vistas deben estar en la misma vista raíz. Por lo tanto, para ser 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; 
} 
1

entiendo que es una vieja pregunta, pero puede que esto ayuda, puede utilizar .isEmpty() en lugar de (.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); 
} 
Cuestiones relacionadas