Réponses:
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;
}
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 false
signifie edittext est not empty
et return true
signifie edittext est empty
...
return etText.getText().toString().trim().length() == 0
au lieu de vraies / fausses branches?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
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;
}
)
dans l'instruction if.
usernameEditText
est EditText
objet et maintenant son renommé en etUserName
.toString();
n'est pas requis
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;
}
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
}
}
isEmpty()
prend un CharSequence
, qui Editable
s'étend, il n'est donc pas nécessaire de faire appel .toString()
à lui.
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
}
Essaye ça
TextUtils.isEmpty(editText.getText());
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) {
}
});
Vous pouvez utiliser à length()
partir de EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
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 if
vocation 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. :)
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;
}
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();
}
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.
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;
}
"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);
}
}
});
utiliser TextUtils.isEmpty("Text here");
pour le code à une seule ligne
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();
}
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
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!");
}
}
}
});
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é.
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
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
.
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();
}
}
}