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??
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;
}
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
...
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;
}
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;
}
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
}
}
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
}
Essaye ça
TextUtils.isEmpty(editText.getText());
Vous pouvez utiliser length()
à partir de EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
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. :)
if(TextUtils.isEmpty(textA.getText())){
showToast(it's Null");
}
vous pouvez utiliser TextUtils.isEmpty comme mon exemple! Bonne chance
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;
}
J'ai utilisé TextUtils
pour cela:
if (TextUtils.isEmpty(UsernameInfo.getText())) {
validationError = true;
validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
private boolean hasContent(EditText et) {
return (et.getText().toString().trim().length() > 0);
}
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) {
}
});
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.
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;
}
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();
}
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;
}
"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);
}
}
});
utilisez TextUtils.isEmpty("Text here");
pour le code sur une seule ligne
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 ....
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.
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
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();
}
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
.
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();
}
}
}
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!");
}
}
}
});
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
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();
}
if ( (usernameEditText.getText()+"").equals("") ) {
// Really just another way
}