web-dev-qa-db-fra.com

Vérifiez si EditText est vide.

J'ai 5 EditTexts dans Android pour les utilisateurs à saisir. Je voudrais savoir si je pourrais avoir une méthode pour vérifier tous les 5 EditTexts s’ils sont nuls. Y a-t-il un moyen de faire ça?? 

195
Winona

J'ai fait quelque chose comme ça une fois;

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;
}
334
cvaldemar
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

OR Selon audrius 

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

Si la fonction return false signifie que edittext est not empty et que return true signifie que edittext est empty... 

167
SBJ

Pour valider EditText, utilisez EditText # setError méthode pour afficher l'erreur et pour vérifier l'utilisation d'une valeur vide ou nulle en classe Android incorporée TextUtils.isEmpty (strVar) qui renvoie true si strVar a la valeur null ou à la longueur zéro. 

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

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

Image taken from Google search

131
MilapTank

essaye ça : 

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

ou utilisez le TextUtils class comme ceci: 

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

Nous sommes arrivés trop tard à la fête, mais je n'ai qu'à ajouter le fichier TextUtils.isEmpty (CharSequence str) d'Android

Retourne vrai si la chaîne est nulle ou 0

Donc, si vous mettez vos cinq EditTexts dans une liste, le code complet serait:

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

Les autres réponses sont correctes, mais faites-le de manière brève, comme

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}
18
Xar E Ahmer

Essaye ça

TextUtils.isEmpty(editText.getText());
9
martyglaubitz

Vous pouvez utiliser length() à partir de EditText.

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

Je fais habituellement ce que SBJ propose, mais l’inverse. Je trouve simplement plus facile de comprendre mon code en vérifiant les résultats positifs plutôt que les doubles négatifs. Vous demandez peut-être comment vérifier si des EdiTexts sont vides, mais ce que vous voulez vraiment savoir, c’est qu’il contient du contenu et non qu’il ne soit pas vide. 

Ainsi:

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

Comme SBJ je préfère renvoyer "par défaut" (ou false) par défaut pour éviter les exceptions car j'ai raté mon contrôle de contenu. De cette façon, vous serez absolument certain qu’une true a été "approuvée" par vos chèques.

Je pense aussi que l'appel if semble un peu plus propre:

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

Cela dépend beaucoup de la préférence, mais je trouve cela plus facile à lire. :)

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

vous pouvez utiliser TextUtils.isEmpty comme mon exemple! Bonne chance

4
Erik Chau

J'utilise cette méthode, qui utilise trim() pour éviter les espaces:

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 exemple si vous avez plusieurs 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
Elenasys

J'ai utilisé TextUtils pour cela:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
3
wildapps
private boolean hasContent(EditText et) {
       return (et.getText().toString().trim().length() > 0);
}
3
LMK

Pourquoi ne pas simplement désactiver le bouton si EditText est vide? IMHO Cela a l'air plus professionnel:

        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) {

        }
       });
3
Igor Zelaya

Je voulais faire quelque chose de similaire. Mais obtenir la valeur textuelle du texte édité et le comparer comme (str=="") ne fonctionnait pas pour moi. Donc, la meilleure option était:

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

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

Travaillé comme un charme.

2
TheOddAbhi

Essayez ceci en utilisant les conditions If ELSE If. Vous pouvez facilement valider vos champs editText.

 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
Sami Khan

Vous pouvez également vérifier toutes les chaînes EditText dans une condition If: comme ceci

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

Vous pouvez appeler cette fonction pour chacun des textes d'édition:

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

"Regarde ça, je suis sûr que tu vas l'aimer."

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
Aris_choice

utilisez TextUtils.isEmpty("Text here"); pour le code sur une seule ligne

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

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

if (UserID.equals("")) 

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

Vous verrez le message dans LogCat ....

1
Jothi

Je préfère utiliser ButterKnife list binding et ensuite appliquer des actions à la liste. Par exemple, dans le cas de EditTexts, les actions personnalisées suivantes sont définies dans une classe d’utilitaire (dans ce cas, 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());
    }
};

Et dans le code de la vue, je lie les EditTexts à une liste et applique les actions lorsque je dois vérifier les vues.

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

Et bien sûr, ce modèle est extensible à la vérification de toute propriété sur un nombre quelconque de vues. Le seul inconvénient, si vous pouvez l'appeler ainsi, est la redondance des vues. Cela signifie que pour utiliser ces EditTexts, vous devez également les lier à une seule variable afin de pouvoir les référencer par nom ou par position dans la liste (edits.get(0), etc.). Personnellement, je lie juste chacun d'eux deux fois, une fois à une seule variable et une fois à une liste et j'utilise celle qui convient le mieux.

0
Saad Farooq

Essayez ceci: C'est à 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()
    }
}

Je vous remercie

0
Sharmad Desai

Pour editText est vide, essayez un autre moyen simple:

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

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

Ce qui suit fonctionne pour moi tout en une déclaration:

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

Tout d'abord, je récupère un texte de la variable EditText, puis le convertis en chaîne et le compare enfin avec "" à l'aide de la méthode .equals.

0
Maihan Nijat

cette fonction fonctionne pour moi

checkempForm privé () {

    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();
            }
            }
            }
0
taha mosaad

Vous pouvez utiliser setOnFocusChangeListener, il vérifiera quand le changement de focus 

        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
hoang lam
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");

}

faire comme ça pour les cinq textes édités

0
Aamirkhan

avec ce code court, vous pouvez supprimer un espace vide au début et à la fin de la chaîne. Si la chaîne est "" renvoyer le message "erreur" sinon vous avez une chaîne

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();
}
0
Emiliano Spirito
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}
0
Sydwell