Überprüfen Sie, ob EditText leer ist. [geschlossen]

218

Ich habe 5 EditTextsin Android für Benutzer zur Eingabe. Ich würde gerne wissen, ob ich eine Methode haben könnte, um alle 5 zu überprüfen, EditTextswenn sie null sind. Gibt es eine Möglichkeit, dies zu tun?

Winona
quelle

Antworten:

367

Ich habe so etwas einmal gemacht;

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
quelle
4
Ja, tut mir leid, ich habe vergessen, dass du fünf hattest. Sie können eine Funktion erstellen, die dasselbe tut, und sie fünfmal aufrufen - oder Sie können die fünf EditText-Funktionen durchlaufen.
Cvaldemar
43
Tut mir leid, pedantisch zu sein, aber Sie schreiben keine Funktionen in Java, sie werden Methoden genannt ...
WiZarD
1
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); Nummer das funktioniert nicht
Zala Janaksinh
64
Sie machen es schwieriger als es sein muss: TextUtils.isEmpty (editText.getText ());
Martyglaubitz
4
Ich benutze normalerweise if (BenutzernameEditText.getText (). ToString (). ToString (). IsEmpty ())
Daniel Jonker
185
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

ODER Nach Audrius

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

Wenn die Funktion return falsebedeutet, dass edittext ist not emptyund return truebedeutet, dass edittext ist empty...

SBJ
quelle
29
+1 Die Länge zu überprüfen ist besser als IMHO nach leeren Zeichenfolgen zu suchen. Es wäre hilfreich, die Zeichenfolge vor dem Überprüfen der Länge zu kürzen, damit Leerzeichen nicht gezählt werden. Übrigens, gibt es einen bestimmten Grund, keine return etText.getText().toString().trim().length() == 0wahren / falschen Zweige zu verwenden?
Audrius
1
Nun,
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); Nummer dann verwenden Sie diese.
Zala Janaksinh
Ja, es funktioniert, weil es von der Länge abhängt ...
SBJ
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
Siddharth Rout
145

Verwenden Sie zum Überprüfen von EditText die Methode EditText # setError , um Fehler anzuzeigen und leere oder Nullwerte zu überprüfen. Verwenden Sie die integrierte Android-Klasse TextUtils.isEmpty (strVar), die true zurückgibt, wenn strVar null oder null ist

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

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

Bild aus der Google-Suche

MilapTank
quelle
Sie sollten )der if-Anweisung eine weitere hinzufügen .
23 ઽ ૯ ท
1
@ Androidenthusiasts danke für den Hinweis auf meinen Tippfehler Ich habe meine Antwort aktualisiert :)
MilapTank
Konnte das zweite Feld "" usernameEditText "" "nicht verstehen. String strUserName = usernameEditText.getText (). ToString ();" Wo wird es deklariert?
Sam
@ Sam es ist mein Tippfehler Ich habe Update meine Antwort usernameEditTextist EditTextObjekt und jetzt ist es umbenannt in etUserName
MilapTank
1
.toString();ist nicht erforderlich
MariuszS
36

Versuche dies :

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

oder verwenden Sie die TextUtils- Klasse wie folgt :

if(TextUtils.isEmpty(strUserName)) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}
Houcine
quelle
3
... das ist der beste Weg, dies zu tun. Andere Beispiele ermöglichen Eingaben, die nicht berücksichtigt werden.
Dell116
29

Viel zu spät zur Party hier, aber ich muss nur Android's eigene TextUtils.isEmpty (CharSequence str) hinzufügen

Gibt true zurück, wenn die Zeichenfolge null oder 0 lang ist

Wenn Sie also Ihre fünf EditTexts in eine Liste aufnehmen, lautet der vollständige Code:

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}
Qw4z1
quelle
isEmpty () sucht nicht nach Leerzeichen, versuchen Sie, ein Leerzeichen
Hunt
3
@Hunt Das stimmt, aber dann wäre es nicht mehr leer oder null. Vielleicht wäre TextUtils.isEmpty (sUserName.trim ()) angebracht, um alle Leerzeichen zu entfernen, nur für den Fall, dass der Benutzer ein oder mehrere Leerzeichen eingegeben hat?
Qw4z1
isEmpty()nimmt ein CharSequence, das sich Editableausdehnt, so dass es nicht nötig ist, es aufzurufen .toString().
Karl
@karl Guter Punkt! Meine Antwort wurde aktualisiert.
Qw4z1
19

Andere Antworten sind richtig, aber machen Sie es in kurzer Zeit wie

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

Versuche dies

TextUtils.isEmpty(editText.getText());
Martyglaubitz
quelle
7

Warum nicht einfach die Schaltfläche deaktivieren, wenn EditText leer ist? IMHO Das sieht professioneller aus:

        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
quelle
7

Sie können length()von verwenden EditText.

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

Normalerweise mache ich das, was SBJ vorschlägt, aber umgekehrt. Ich finde es einfach einfacher, meinen Code zu verstehen, indem ich nach positiven Ergebnissen anstatt nach doppelten Negativen suche. Sie fragen sich vielleicht, wie Sie nach leeren EdiTexts suchen sollen, aber Sie möchten wirklich wissen, ob sie Inhalte enthalten und nicht, dass sie nicht leer sind.

Wie so:

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

Als SBJ ziehe ich es vor, falsestandardmäßig "hat keinen Inhalt" (oder ) zurückzugeben, um Ausnahmen zu vermeiden, da ich meine Inhaltsprüfung abgebrochen habe. Auf diese Weise können Sie absolut sicher sein, dass a truedurch Ihre Schecks "genehmigt" wurde.

Ich denke auch, dass die ifBerufung ein bisschen sauberer aussieht:

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

Es hängt sehr stark von den Vorlieben ab, aber ich finde das leichter zu lesen. :) :)

sigcontSE
quelle
4

Ich benutze diese Methode, trim()um Leerzeichen zu vermeiden:

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

Ein Beispiel, wenn Sie mehrere EditText´s haben

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

Sie können TextUtils.isEmpty wie mein Beispiel verwenden! Viel Glück

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

Ich habe dafür verwendet TextUtils:

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

Sie können auch alle EditText-Zeichenfolgen in einer If-Bedingung überprüfen: so

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

Ich wollte etwas Ähnliches machen. Aber den Textwert aus dem Bearbeiten von Text zu erhalten und ihn so zu vergleichen, (str=="")als würde er bei mir nicht funktionieren. Die bessere Option war also:

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

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

Lief wie am Schnürchen.

TheOddAbhi
quelle
2

Probieren Sie dies mit If ELSE If-Bedingungen aus. Sie können Ihre editText-Felder einfach überprüfen.

 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
quelle
2

Sie können diese Funktion für jeden der Bearbeitungstexte aufrufen:

public boolean isEmpty(EditText editText) {
    boolean isEmptyResult = false;
    if (editText.getText().length() == 0) {
        isEmptyResult = true;
    }
    return isEmptyResult;
}
dreinoso
quelle
1
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

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

if (UserID.equals("")) 

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

Sie sehen die Nachricht in LogCat ....

Jothi
quelle
1

"Schau dir das an, ich bin mir sicher, dass es dir gefallen wird."

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
quelle
1

Verwendung TextUtils.isEmpty("Text here");für einzeiligen Code

Anand Savjani
quelle
1

Mit diesem Funktionscode können Sie Leerzeichen am Anfang und Ende der Zeichenfolge löschen. Wenn die Zeichenfolge "" ist, geben Sie die Meldung "error" zurück, andernfalls haben Sie eine Zeichenfolge

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
quelle
Bitte fügen Sie eine kurze Erklärung Ihres Codes hinzu.
Terru_theTerror
stackoverflow.com/questions/61766882/… können Sie mir bei meinem Problem helfen?
Sonniger
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");

}

Tun Sie dies für alle fünf Text bearbeiten

Aamir Khan
quelle
0

Sie können verwenden setOnFocusChangeListener, es wird überprüft, wenn sich der Fokus ändert

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

Ich bevorzuge es, die ButterKnife-Listenbindung zu verwenden und dann Aktionen auf die Liste anzuwenden. Im Fall von EditTexts sind beispielsweise die folgenden benutzerdefinierten Aktionen in einer Dienstprogrammklasse definiert (in diesem Fall 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());
    }
};

Und im Ansichtscode binde ich die EditTexts an eine Liste und wende die Aktionen an, wenn ich die Ansichten überprüfen muss.

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

Und natürlich ist dieses Muster erweiterbar, um jede Eigenschaft in einer beliebigen Anzahl von Ansichten zu überprüfen. Der einzige Nachteil, wenn Sie es so nennen können, ist die Redundanz der Ansichten. Das heißt, um diese EditTexts zu verwenden, müssten Sie sie auch an einzelne Variablen binden, damit Sie sie nach Namen referenzieren können, oder Sie müssten sie nach Position in der Liste ( edits.get(0)usw.) referenzieren . Persönlich binde ich jeden von ihnen nur zweimal, einmal an eine einzelne Variable und einmal an eine Liste und verwende, je nachdem, was angemessen ist.

Saad Farooq
quelle
0

Um editText ist leer, versuchen Sie es auf eine andere einfache Weise:

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

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}
Guru
quelle
Warum Fall ignorieren?!
Tima
0

Probieren Sie es aus: Es ist in 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()
    }
}

Danke dir

Sharmad Desai
quelle
0

Folgendes funktioniert für mich in einer Aussage:

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

Zuerst rufe ich einen Text aus dem ab, EditTextkonvertiere ihn dann in einen String und vergleiche ihn schließlich mit der Methode ""using .equals.

Maihan Nijat
quelle
0

Diese Funktion funktioniert für mich

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
quelle