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?

Winona
fuente

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;
}
cvaldemar
fuente
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...

SBJ
fuente
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

MilapTank
fuente
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;
}
Houcine
fuente
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
    }
}
Qw4z1
fuente
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
}
Zar E Ahmer
fuente
11

Prueba esto

TextUtils.isEmpty(editText.getText());
martyglaubitz
fuente
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) {

        }
       });
Igor Zelaya
fuente
7

Puedes usar length()desde EditText.

public boolean isEditTextEmpty(EditText mInput){
   return mInput.length() == 0;
}
JPMagalhaes
fuente
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. :)

sigcontSE
fuente
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;
}
Jorgesys
fuente
4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

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

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

Solía TextUtilspara esto:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
wildapps
fuente
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();
            }
Mirza Awais Ahmad
fuente
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.

TheOddAbhi
fuente
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;
            }
Sami Khan
fuente
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;
}
dreinoso
fuente
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 ...

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

utilizar TextUtils.isEmpty("Text here");para código de línea única

Anand Savjani
fuente
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();
}
Emiliano Spirito
fuente
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

Aamirkhan
fuente
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!");
                }
            }
        }
    });
hoang lam
fuente
0
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}
Sydwell
fuente
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.

Saad Farooq
fuente
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();
}
Gurú
fuente
¿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

Sharmad Desai
fuente
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.

Maihan Nijat
fuente
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();
            }
            }
            }
taha mosaad
fuente