Vérifiez si EditText est vide. [fermé]

218

J'en ai 5 EditTextsdans Android pour que les utilisateurs puissent les saisir. Je voudrais savoir si je pourrais avoir une méthode pour vérifier tous les 5 EditTextss'ils sont nuls. Y a-t-il un moyen de faire ça??

Winona
la source

Réponses:

367

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;
}
cvaldemar
la source
4
oui désolé, j'ai oublié que tu en avais cinq. Vous pouvez créer une fonction qui fait la même chose et l'appeler cinq fois - ou vous pouvez faire une boucle sur les cinq EditText.
cvaldemar
43
Désolé d'être pédant, mais vous n'écrivez pas de fonctions en java elles sont appelées méthodes ...
WiZarD
1
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); nombre cela ne fonctionne pas
Zala Janaksinh
64
vous le rendez plus difficile que nécessaire: TextUtils.isEmpty (editText.getText ());
martyglaubitz
4
J'utilise habituellement 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;
}

OU selon audrius

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

Si la fonction return falsesignifie edittext est not emptyet return truesignifie edittext est empty...

SBJ
la source
29
+1 La vérification de la longueur est meilleure que la vérification de la chaîne vide à mon humble avis. Il serait utile de couper la chaîne avant de vérifier la longueur afin que les espaces ne soient pas comptés. Btw, une raison particulière de ne pas utiliser return etText.getText().toString().trim().length() == 0au lieu de vraies / fausses branches?
Audrius
1
eh bien je suppose que la lisibilité et la maintenabilité du code ...
WiZarD
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); puis utilisez-le.
Zala Janaksinh
Oui ça marche car ça dépend de la longueur ...
SBJ
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
Siddharth Rout
145

Pour valider EditText, utilisez la méthode EditText # setError pour afficher l'erreur et pour vérifier la valeur vide ou nulle, utilisez la classe Android intégrée TextUtils.isEmpty (strVar) qui retourne vrai si strVar est de longueur nulle ou nulle

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

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

Image prise à partir de la recherche Google

MilapTank
la source
vous devez en ajouter un autre )dans l'instruction if.
ʍѳђ ઽ ૯ ท
1
@Androidenthusiasts merci de l'avoir pointé mon erreur de frappe j'ai mis à jour ma réponse :)
MilapTank
Impossible de comprendre le deuxième champ "" usernameEditText "" "String strUserName = usernameEditText.getText (). ToString ();" où est-il déclaré?
Sam
@Sam c'est ma faute de frappe j'ai mis à jour ma réponse usernameEditTextest EditTextobjet et maintenant son renommé en etUserName
MilapTank
1
.toString();n'est pas requis
MariuszS
36

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 la classe TextUtils comme ceci:

if(TextUtils.isEmpty(strUserName)) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}
Houcine
la source
3
... c'est la meilleure façon de le faire. D'autres exemples permettent une entrée qui n'est pas prise en compte.
dell116
29

Bien tard pour la fête ici, mais je dois juste ajouter le propre TextUtils.isEmpty d' Android (chaîne CharSequence)

Renvoie vrai si la chaîne est nulle ou de longueur 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
    }
}
Qw4z1
la source
isEmpty () ne vérifie pas l'espace vide, essayez d'entrer un espace
Hunt
3
@Hunt C'est vrai, mais il ne serait plus vide ni nul. Peut-être que TextUtils.isEmpty (sUserName.trim ()) serait approprié, pour supprimer tous les blancs, juste au cas où l'utilisateur aurait entré un ou plusieurs espaces vides?
Qw4z1
isEmpty()prend un CharSequence, qui Editables'étend, il n'est donc pas nécessaire de faire appel .toString()à lui.
karl
@karl Bon point! Mis à jour ma réponse.
Qw4z1
19

D'autres réponses sont correctes, mais faites-le brièvement comme

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}
Zar E Ahmer
la source
11

Essaye ça

TextUtils.isEmpty(editText.getText());
martyglaubitz
la source
7

Pourquoi ne pas simplement désactiver le bouton si EditText est vide? IMHO Cela semble 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) {

        }
       });
Igor Zelaya
la source
7

Vous pouvez utiliser à length()partir de EditText.

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

Je fais habituellement quoi 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 les EdiTexts vides, mais ce que vous voulez vraiment savoir, c'est s'il a du contenu et non qu'il n'est 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;
}

En tant que SBJ, je préfère retourner "n'a pas de contenu" (ou false) par défaut pour éviter les exceptions car j'ai falsifié ma vérification de contenu. De cette façon, vous serez absolument certain qu'untrue a été "approuvé" par vos chèques.

Je pense aussi que la ifvocation est un peu plus propre:

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

Cela dépend beaucoup des préférences, mais je trouve cela plus facile à lire. :)

sigcontSE
la source
4

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

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

if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
        Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
        return;
}
Jorgesys
la source
4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

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

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

J'ai utilisé TextUtilspour ça:

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

Vous pouvez également vérifier toutes les chaînes EditText en une seule 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();
            }
Mirza Awais Ahmad
la source
2

Je voulais faire quelque chose de similaire. Mais obtenir la valeur du texte à partir du texte modifié et le comparer comme (str=="")ne fonctionnait pas pour moi. La meilleure option était donc:

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

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

A fonctionné comme un charme.

TheOddAbhi
la source
2

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;
            }
Sami Khan
la source
2

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;
}
dreinoso
la source
1
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 ....

Jothi
la source
1

"Vérifiez cela, je suis sûr que vous l'aimerez."

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
la source
1

utiliser TextUtils.isEmpty("Text here");pour le code à une seule ligne

Anand Savjani
la source
1

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 "" renvoie 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();
}
Emiliano Spirito
la source
Veuillez ajouter une courte explication de votre code.
Terru_theTerror
stackoverflow.com/questions/61766882/… pouvez-vous m'aider avec mon problème ??
Sunny
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");

}

faire comme ça pour les cinq éditer le texte

Aamir Khan
la source
0

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

Je préfère utiliser la liaison de liste ButterKnife , puis appliquer des actions sur la liste. Par exemple, avec le cas de EditTexts, j'ai les actions personnalisées suivantes définies dans une classe 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 j'ai besoin de 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 pour vérifier n'importe quelle propriété sur un nombre quelconque de vues. Le seul inconvénient, si vous pouvez l'appeler ainsi, est la redondance des vues. Autrement dit, pour utiliser ces EditTexts, vous devez également les lier à des variables uniques afin de pouvoir les référencer par leur nom ou les référencer par position dans la liste ( edits.get(0), etc.). Personnellement, je lie simplement chacun d'eux deux fois, une fois à une seule variable et une fois à la liste et j'utilise celui qui est approprié.

Saad Farooq
la source
0

Pour modifier le texte est vide, essayez un autre de cette manière simple:

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

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}
Gourou
la source
pourquoi ignorer la casse?!
Tima
0

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

Sharmad Desai
la source
0

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

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

D'abord, je récupère un texte de la EditText, puis le convertis en chaîne et enfin le compare avec la méthode ""using .equals.

Maihan Nijat
la source
0

cette fonction fonctionne pour moi

void privé 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
la source