Sprawdź, czy EditText jest pusty. [Zamknięte]


218

Mam 5 EditTextsw Androidzie dla użytkowników do wprowadzenia. Chciałbym wiedzieć, czy mógłbym mieć metodę sprawdzania wszystkich 5, EditTextsjeśli są one zerowe. Czy jest na to sposób?

Odpowiedzi:


367

Zrobiłem kiedyś coś takiego;

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

4
tak przepraszam, zapomniałem, że masz pięć. Możesz stworzyć funkcję, która zrobiła to samo i wywołać ją pięć razy - lub możesz zapętlić pięć edycji tekstu.
cvaldemar,

43
Przykro mi, że
jestem

1
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); numer to nie działa
Zala Janaksinh

64
wszystko to utrudnia, niż jest to konieczne: TextUtils.isEmpty (editText.getText ());
martyglaubitz

4
Zwykle używam 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;
}

LUB As Per audrius

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

Jeśli funkcja return falseoznacza edittext is, not emptya return trueoznacza edittext is empty...


29
+1 Sprawdzanie długości jest lepsze niż sprawdzanie pustego ciągu IMHO. Pomoże to przyciąć łańcuch przed sprawdzeniem długości, aby znaki białych znaków nie były liczone. Btw, jakiś konkretny powód, aby nie używać return etText.getText().toString().trim().length() == 0zamiast prawdziwych / fałszywych gałęzi?
Audrius,

1
Cóż,
wydaje

if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); numer, a następnie użyj tego.
Zala Janaksinh,

Tak, działa, ponieważ zależy od długości ...
SBJ

private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
Siddharth Rout

145

Do sprawdzania poprawności EditText użyj metody EditText # setError w celu wyświetlenia błędu oraz do sprawdzenia pustej lub pustej wartości użyj wbudowanej klasy Androida TextUtils.isEmpty (strVar), która zwraca true, jeśli strVar ma wartość zerową lub zerową

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

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

Zdjęcie pochodzi z wyszukiwania Google


powinieneś dodać kolejny )w instrukcji if.
ʍѳђ ઽ ૯ ท

1
@Androidenthusiasts dzięki za wskazanie tego mój błąd w literówce Mam aktualizację mojej odpowiedzi :)
MilapTank

Nie mogłem zrozumieć drugiego pola „” nazwa_użytkownikaEditText ”„ ”Ciąg strUserName = nazwa użytkownikaEditText.getText (). ToString ();" gdzie jest zadeklarowany?
Sam

@Sam to moja literówka, mam aktualizację, moja odpowiedź usernameEditTextto EditTextobiekt, a teraz jego nazwa została zmieniona na etUserName
MilapTank,

1
.toString();nie jest wymagane
MariuszS 27.04.16

36

Spróbuj tego :

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

lub użyj klasy TextUtils w następujący sposób:

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

3
... to najlepszy sposób, aby to zrobić. Inne przykłady pozwalają na wprowadzenie danych, które nie są rozliczane.
dell116

29

Tutaj jest późno na imprezę, ale muszę tylko dodać własny TextUtils.isEmpty Androida (str CharSequence)

Zwraca wartość true, jeśli ciąg ma wartość zerową lub 0

Więc jeśli umieścisz pięć EditTexts na liście, pełny kod będzie:

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

isEmpty () nie sprawdza pustego miejsca, spróbuj wprowadzić jedną spację
Hunt

3
@Hunt To prawda, ale wtedy nie byłby już pusty ani zerowy. Może TextUtils.isEmpty (sUserName.trim ()) byłoby odpowiednie, aby usunąć wszystkie puste miejsca, na wypadek, gdyby użytkownik wprowadził jedną lub kilka spacji?
Qw4z1 17.03.13

isEmpty()trwa CharSequence, który się Editablewydłuża, więc nie trzeba go wywoływać .toString().
karl

@karl Dobra uwaga! Zaktualizowałem moją odpowiedź.
Qw4z1

19

Inne odpowiedzi są poprawne, ale zrób to w krótki sposób

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}


7

Dlaczego nie po prostu wyłączyć przycisku, jeśli EditText jest pusty? IMHO Wygląda bardziej profesjonalnie:

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

        }
       });

7

Możesz używać length()z EditText.

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

6

Zazwyczaj robię to, co SBJ proponuje, ale na odwrót. Po prostu łatwiej mi zrozumieć mój kod, sprawdzając pozytywne wyniki zamiast podwójnych negatywów. Być może pytasz, jak sprawdzić puste EdiTexts, ale tak naprawdę chcesz wiedzieć, czy ma jakąś treść, a nie to, że nie jest pusta.

Tak jak:

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

Jako SBJ wolę falsedomyślnie zwracać „nie ma treści” (lub ), aby uniknąć wyjątków, ponieważ zepsułem sprawdzanie zawartości. W ten sposób będziesz absolutnie pewien, że truetwoje „zatwierdzone” przez twoje czeki.

Wydaje mi się również, że ifwywołanie wygląda trochę lepiej:

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

To bardzo zależy od preferencji, ale uważam, że jest to łatwiejsze do odczytania. :)


4

Używam tej metody, która trim()pozwala uniknąć pustych miejsc:

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

przykład, jeśli masz kilka EditText

if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
        Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
        return;
}

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

możesz użyć TextUtils.isEmpty jak mój przykład! Powodzenia


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

3

Użyłem TextUtilsdo tego:

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

2

Możesz również sprawdzić wszystkie ciągi EditText w jednym warunku If: w ten sposób

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

2

Chciałem zrobić coś podobnego. Ale uzyskiwanie wartości tekstu z edycji tekstu i porównywanie jej jak (str=="")dla mnie nie działało. Tak więc lepszą opcją było:

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

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

Działa jak urok.


2

Wypróbuj to, używając warunków If ELSE If. Możesz łatwo zweryfikować swoje pola 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

Możesz wywołać tę funkcję dla każdego tekstu edycji:

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

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

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

if (UserID.equals("")) 

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

Zobaczysz komunikat w LogCat ....


1

„sprawdź to na pewno ci się spodoba”.

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

za pomocą tego krótkiego kodu możesz usunąć puste miejsce na początku i na końcu łańcucha. Jeśli ciąg jest „”, zwróć komunikat „błąd”, w przeciwnym razie masz ciąg

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

Dodaj krótkie wyjaśnienie swojego kodu.
Terru_theTerror

stackoverflow.com/questions/61766882/... czy możesz mi pomóc z moim problemem?
Słoneczny

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

}

zrób tak dla wszystkich pięciu tekstów edycji


0

Możesz użyć setOnFocusChangeListener, sprawdzi, kiedy zmiana fokusa

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

0

Wolę używać wiązania listy ButterKnife, a następnie stosować akcje na liście. Na przykład w przypadku EditTexts mam następujące niestandardowe akcje zdefiniowane w klasie narzędzia (w tym przypadku 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());
    }
};

A w kodzie widoku wiążę EditTexts z listą i stosuję działania, gdy muszę sprawdzić widoki.

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

Oczywiście wzorzec ten można rozszerzyć na sprawdzenie dowolnej właściwości w dowolnej liczbie widoków. Jedynym minusem, jeśli można to tak nazwać, jest nadmiar poglądów. Oznacza to, że aby użyć tych EditTexts, musiałbyś również powiązać je z pojedynczymi zmiennymi, abyś mógł odwoływać się do nich po nazwie lub musiałbyś odwoływać się do nich według pozycji na liście ( edits.get(0)itp.). Osobiście po prostu wiążę każdą z nich dwa razy, raz z jedną zmienną i raz z listą i używam tego, co jest odpowiednie.


0

Aby editText jest pusty, wypróbuj inny prosty sposób:

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

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

dlaczego ignorujesz skrzynkę ?!
Tima

0

Wypróbuj to: jest w Kotlinie

//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()
    }
}

Dziękuję Ci


0

Poniższe działa dla mnie wszystko w jednym oświadczeniu:

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

Najpierw pobieram tekst z, EditTexta następnie przekształcam go w ciąg znaków, a na koniec porównuję go za ""pomocą .equalsmetody.


0

ta funkcja działa dla mnie

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();
            }
            }
            }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.