Compruebe si EditText está vacío. [cerrado]


218

Tengo 5 EditTextsen Android para que los usuarios ingresen. Me gustaría saber si podría tener un método para verificar los 5 EditTextssi son nulos. ¿Hay alguna forma de hacer esto?

Respuestas:


367

Hice algo como esto una vez;

EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
    Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
    return;
}

44
si lo siento, olvidé que tenías cinco. Podría hacer una función que hiciera lo mismo y llamarla cinco veces, o podría recorrer los cinco EditText.
cvaldemar

43
Lamento ser pedante, pero no escribes funciones en Java, se llaman métodos ...
WiZarD

1
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); número esto no funciona
Zala Janaksinh

64
todos lo hacen más difícil de lo necesario: TextUtils.isEmpty (editText.getText ());
martyglaubitz

44
Usualmente uso if (usernameEditText.getText (). ToString (). ToString (). IsEmpty ())
Daniel Jonker

185
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

O según Audrius

  private boolean isEmpty(EditText etText) {
        return etText.getText().toString().trim().length() == 0;
    }

Si la función return falsesignifica edittext es not emptyy return truesignifica edittext es empty...


29
+1 Verificar la longitud es mejor que verificar la cadena vacía en mi humilde opinión. Sería útil recortar la cadena antes de verificar la longitud para que no se cuenten los espacios en blanco. Por cierto, ¿alguna razón particular de no usar en return etText.getText().toString().trim().length() == 0lugar de ramas verdaderas / falsas?
Audrius

1
Bueno, supongo que la legibilidad y la facilidad de mantenimiento del código ...
WiZarD

if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); número y luego use esto.
Zala Janaksinh

Sí, funciona porque depende de la duración ...
SBJ

private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
Siddharth Rout

145

Para validar EditText, use el método EditText # setError para mostrar el error y para verificar valores vacíos o nulos, use la clase de Android incorporada TextUtils.isEmpty (strVar) que devuelve verdadero si strVar es nulo o de longitud cero

EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();

 if(TextUtils.isEmpty(strUserName)) {
    etUserName.setError("Your message");
    return;
 }

Imagen tomada de la búsqueda de Google


debe agregar otro )en la instrucción if.
ʍѳђ ઽ ૯ ท

1
@Androidenthusiasts gracias por señalar mi error tipográfico. He actualizado mi respuesta :)
MilapTank

No se pudo entender el segundo campo "" usernameEditText "" "String strUserName = usernameEditText.getText (). ToString ();" ¿dónde se declara?
Sam

@ Sam es mi error tipográfico tengo actualizar mi respuesta usernameEditTextes EditTextobjeto y ahora su renombrado a etUserName
MilapTank

1
.toString();no es obligatorio
MariuszS

36

prueba esto :

EditText txtUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = usernameEditText.getText().toString();
if (strUserName.trim().equals("")) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}

o use la clase TextUtils de esta manera:

if(TextUtils.isEmpty(strUserName)) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}

3
... esta es la mejor manera de hacer esto. Otros ejemplos permiten entradas que no se tienen en cuenta.
dell116

29

Muy tarde para la fiesta aquí, pero solo tengo que agregar TextUtils.isEmpty (Str. CharSequence) de Android

Devuelve verdadero si la cadena es nula o de longitud 0

Entonces, si pones tus cinco EditTexts en una lista, el código completo sería:

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}

isEmpty () no comprueba el espacio en blanco, intente ingresar un espacio
Hunt

3
@Hunt Eso es cierto, pero ya no estaría vacío o nulo. ¿Quizás TextUtils.isEmpty (sUserName.trim ()) sería apropiado para eliminar todos los espacios en blanco, en caso de que el usuario haya ingresado uno o varios espacios en blanco?
Qw4z1

isEmpty()toma un CharSequence, que se Editableextiende, por lo que no hay necesidad de llamarlo .toString().
karl

@karl Buen punto! Actualicé mi respuesta.
Qw4z1

19

Otras respuestas son correctas, pero hazlo de forma breve como

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}


7

¿Por qué no simplemente deshabilitar el botón si EditText está vacío? En mi humilde opinión esto se ve más profesional:

        final EditText txtFrecuencia = (EditText) findViewById(R.id.txtFrecuencia);  
        final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleStartStop);
        txtFrecuencia.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            toggle.setEnabled(txtFrecuencia.length() > 0);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

        }
       });

7

Puedes usar length()desde EditText.

public boolean isEditTextEmpty(EditText mInput){
   return mInput.length() == 0;
}

6

Usualmente hago lo que SBJ propone, pero al revés. Simplemente me resulta más fácil entender mi código al buscar resultados positivos en lugar de negativos dobles. Es posible que esté preguntando cómo verificar si hay EdiTexts vacíos, pero lo que realmente quiere saber es si tiene algún contenido y no que no esté vacío.

Al igual que:

private boolean hasContent(EditText et) {
    // Always assume false until proven otherwise
    boolean bHasContent = false; 

    if (et.getText().toString().trim().length() > 0) {
        // Got content
        bHasContent = true;
    }
    return bHasContent;
}

Como SBJ , prefiero devolver "no tiene contenido" (o false) por defecto para evitar excepciones porque borré mi verificación de contenido. De esa manera, estará absolutamente seguro de que truesus cheques han "aprobado".

También creo que la ifllamada también parece un poco más limpia:

if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}

Depende mucho de la preferencia, pero me resulta más fácil de leer. :)


4

Yo uso este método, que usa trim()para evitar espacios en blanco:

EditText myEditText = (EditText) findViewById(R.id.editUsername);
if ("".equals(myEditText.getText().toString().trim()) {
    Toast.makeText(this, "You did not enter a value!", Toast.LENGTH_LONG).show();
    return;
}

un ejemplo si tienes varios EditText´s

if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
        Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
        return;
}

4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

¡puedes usar TextUtils.isEmpty como mi ejemplo! Buena suerte


3
private boolean hasContent(EditText et) {
       return (et.getText().toString().trim().length() > 0);
}

3

Solía TextUtilspara esto:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}

2

También puede verificar todas las cadenas EditText en una condición If: como esta

if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
                Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
            }

2

Quería hacer algo similar. Pero obtener el valor de texto de editar texto y compararlo como si (str=="")no funcionara para mí. Entonces, la mejor opción era:

EditText eText = (EditText) findViewById(R.id.etext);

if (etext.getText().length() == 0)
{//do what you want }

Trabajado como un encanto.


2

Pruebe esto con el uso de If ELSE If condiciones. Puede validar sus campos editText fácilmente.

 if(TextUtils.isEmpty(username)) {
                userNameView.setError("User Name Is Essential");
                return;
         } else  if(TextUtils.isEmpty(phone)) {
                phoneView.setError("Please Enter Your Phone Number");
                return;
            }

2

Puede llamar a esta función para cada uno de los textos de edición:

public boolean isEmpty(EditText editText) {
    boolean isEmptyResult = false;
    if (editText.getText().length() == 0) {
        isEmptyResult = true;
    }
    return isEmptyResult;
}

1
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

String UserID = txtUserID.getText().toString();

if (UserID.equals("")) 

{
    Log.d("value","null");
}

Verá el mensaje en LogCat ...


1

"mira esto, estoy seguro de que te gustará".

log_in.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        username=user_name.getText().toString();
        password=pass_word.getText().toString();
        if(username.equals(""))
        {
            user_name.setError("Enter username");
        }
        else if(password.equals(""))
        {
            pass_word.setError("Enter your password");
        }
        else
        {
            Intent intent=new Intent(MainActivity.this,Scan_QRActivity.class);
            startActivity(intent);
        }
    }
});


1

Con este código corto puede eliminar el espacio vacío al inicio y al final de la cadena. Si la cadena es "" devolver el mensaje "error" de lo contrario tiene una cadena

EditText user = findViewById(R.id.user); 
userString = user.getText().toString().trim(); 
if (userString.matches("")) {
    Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
    return; 
}else{
     Toast.makeText(this, "Ok", Toast.LENGTH_SHORT).show();
}

Agregue una breve explicación de su código.
Terru_theTerror

stackoverflow.com/questions/61766882/… ¿Me pueden ayudar con mi problema?
Soleado

0
EditText edt=(EditText)findViewById(R.id.Edt);

String data=edt.getText().toString();

if(data=="" || data==null){

 Log.e("edit text is null?","yes");

}

else {

 Log.e("edit text is null?","no");

}

hacer esto para los cinco editar texto


0

Puede usar setOnFocusChangeListener, verificará cuando cambie el enfoque

        txt_membername.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View arg0, boolean arg1) {
            if (arg1) {
                //do something
            } else {
                if (txt_membername.getText().toString().length() == 0) {
                    txt_membername
                            .setError("Member name is not empty, Plz!");
                }
            }
        }
    });

0
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}

0

Prefiero usar el enlace de la lista de ButterKnife y luego aplicar acciones en la lista. Por ejemplo, con el caso de EditTexts, tengo las siguientes acciones personalizadas definidas en una clase de utilidad (en este caso ButterKnifeActions)

public static <V extends View> boolean checkAll(List<V> views, ButterKnifeActions.Check<V> checker) {
    boolean hasProperty = true;
    for (int i = 0; i < views.size(); i++) {
        hasProperty = checker.checkViewProperty(views.get(i), i) && hasProperty;
    }
    return hasProperty;
}

public static <V extends View> boolean checkAny(List<V> views, ButterKnifeActions.Check<V> checker) {
    boolean hasProperty = false;
    for (int i = 0; i < views.size(); i++) {
        hasProperty = checker.checkViewProperty(views.get(i), i) || hasProperty;
    }
    return hasProperty;
}

public interface Check<V extends View> {
    boolean checkViewProperty(V view, int index);
}

public static final ButterKnifeActions.Check<EditText> EMPTY = new Check<EditText>() {
    @Override
    public boolean checkViewProperty(EditText view, int index) {
        return TextUtils.isEmpty(view.getText());
    }
};

Y en el código de vista, asocio EditTexts a una lista y aplico las acciones cuando necesito verificar las vistas.

@Bind({R.id.edit1, R.id.edit2, R.id.edit3, R.id.edit4, R.id.edit5}) List<EditView> edits;
...
if (ButterKnifeActions.checkAny(edits, ButterKnifeActions.EMPTY)) {
    Toast.makeText(getContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
}

Y, por supuesto, este patrón es extensible para verificar cualquier propiedad en cualquier cantidad de vistas. El único inconveniente, si puede llamarlo así, es la redundancia de las vistas. Es decir, para usar esos EditTexts, también tendría que vincularlos a variables individuales para poder hacer referencia a ellos por nombre o debería hacer referencia a ellos por posición en la lista ( edits.get(0), etc.). Personalmente, solo ato cada una de ellas dos veces, una a una sola variable y otra a la lista y uso la que sea apropiada.


0

Para editar el texto está vacío, intente con otro de esta manera simple:

String star = editText.getText().toString();

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}

¿Por qué ignorar el caso?
Tima

0

Prueba esto: está en Kotlin

//button from xml
button.setOnClickListener{                                         
    val new=addText.text.toString()//addText is an EditText
    if(new=isNotEmpty())
    {
         //do something
    }
    else{
        new.setError("Enter some msg")
        //or
        Toast.makeText(applicationContext, "Enter some message ", Toast.LENGTH_SHORT).show()
    }
}

Gracias


0

Lo siguiente funciona para mí todo en una declaración:

if(searchText.getText().toString().equals("")) 
    Log.d("MY_LOG", "Empty");

Primero recupero un texto del EditTexty luego lo convierto en una cadena y finalmente lo comparo con el método de ""uso .equals.


0

esta función me funciona

Private void checkempForm () {

    EditText[] allFields = { field1_txt, field2_txt, field3_txt, field4_txt};
    List<EditText> ErrorFields =new ArrayList<EditText>();//empty Edit text arraylist
            for(EditText edit : allFields){
                if(TextUtils.isEmpty(edit.getText())){ 

            // EditText was empty
             ErrorFields.add(edit);//add empty Edittext only in this ArayList
            for(int i = 0; i < ErrorFields.size(); i++)
            {
                EditText currentField = ErrorFields.get(i);
                currentField.setError("this field required");
                currentField.requestFocus();
            }
            }
            }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.