Перевірте, чи EditText порожній. [зачинено]


218

У мене є 5 EditTextsв Android для користувачів, щоб ввести. Я хотів би знати, чи міг би я мати метод перевірки всіх 5, EditTextsякщо вони є недійсними. Чи є спосіб це зробити ??

Відповіді:


367

Я робив щось подібне колись;

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
так вибачте, забув, що у вас було п’ять. Ви можете зробити функцію, яка зробила те саме, і назвати її п'ять разів - або ви можете перевести петлю на п'ять EditText.
cvaldemar

43
Вибачте за педантичність, але ви не пишете функції в Java, вони називаються методами ...
WiZarD,

1
якщо EditText.setInputType (InputType.TYPE_CLASS_NUMBER); номер це не працює
Zala Janaksinh

64
ви робите це складніше, ніж потрібно: TextUtils.isEmpty (editText.getText ());
martyglaubitz

4
Я зазвичай використовую, якщо (usernameEditText.getText (). ToString (). ToString (). IsEmpty ())
Daniel Jonker

185
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

АБО Як за аудирією

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

Якщо функція return falseозначає, що edittext є, not emptyа return trueозначає, що edittext є empty...


29
+1 Перевірка довжини краще, ніж перевірка наявності порожнього рядка IMHO. Це допоможе обрізати рядок перед перевіркою довжини, щоб символи пробілів не рахувалися. До речі, якась конкретна причина використання return etText.getText().toString().trim().length() == 0замість справжніх / хибних гілок?
Audrius

1
гадаю, читабельність коду та ремонтопридатність ...
WiZarD,

якщо EditText.setInputType (InputType.TYPE_CLASS_NUMBER); число, тоді використовуйте це.
Zala Janaksinh

Так, це працює, оскільки це залежить від довжини ...
SBJ

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

145

Для перевірки EditText використовуйте метод EditText # setError для помилки показу та для перевірки порожнього або нульового значення використовуйте вбудований андроїд-клас TextUtils.isEmpty (strVar), який повертає істину, якщо strVar дорівнює нулю або нульовій довжині

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

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

Зображення, взято з пошуку Google


ви повинні додати інше )в операторі if.
ʍѳђ ઽ ૯ ท

1
@Androidenthusiasts дякую, що вказали на мою помилку друку, я оновив свою відповідь :)
MilapTank

Неможливо зрозуміти друге поле "" usernameEditText "" "String strUserName = usernameEditText.getText (). ToString ();" де це оголошено?
Сем

@Sam це мій друк, я оновив, моя відповідь usernameEditTextє EditTextоб'єктом, і тепер її перейменовано на etUserName
MilapTank

1
.toString();не потрібно
MariuszS

36

спробуйте це :

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

або використовувати клас TextUtils таким чином:

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

3
... це найкращий спосіб зробити це. Інші приклади дозволяють вводити дані, які не враховуються.
dell116

29

Запізнився на вечірку тут, але мені просто потрібно додати Android власний TextUtils.isEmpty (вул. CharSequence)

Повертає true, якщо рядок є нульовим або 0-довжиною

Отже, якщо ви помістите п'ять EditTexts у список, повний код буде таким:

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

isEmpty () не перевіряє порожній пробіл, спробуйте ввести один пробіл
Hunt

3
@Hunt Це правда, але тоді це вже не буде порожнім чи нульовим. Можливо, TextUtils.isEmpty (sUserName.trim ()) буде доречним, щоб видалити всі пробіли, на випадок, якщо користувач ввів один чи кілька порожніх пробілів?
Qw4z1

isEmpty()бере а CharSequence, який Editableрозширюється, тому не потрібно дзвонити .toString()на нього.
Карл

@karl Добрий момент! Оновлено мою відповідь.
Qw4z1

19

Інші відповіді правильні, але робити це коротко, як

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


7

Чому б просто не відключити кнопку, якщо EditText порожній? IMHO Це виглядає більш професійно:

        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

Ви можете використовувати length()з EditText.

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

6

Я зазвичай роблю те, що пропонує SBJ , але навпаки. Мені просто легше зрозуміти свій код, перевіряючи на позитивні результати замість подвійних негативів. Ви можете запитати, як перевірити порожні EdiTexts, але те, що ви насправді хочете знати, це чи є у нього вміст, а не те, що він не порожній.

Так:

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

Оскільки SBJ я вважаю за краще повертати "не містить контенту" (або false) за замовчуванням, щоб уникнути винятків, тому що я захистив свою перевірку вмісту. Таким чином ви будете абсолютно впевнені, що trueваші чеки були "схвалені".

Я також думаю, що ifдзвінок також виглядає трохи чистіше:

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

Це дуже залежить від уподобань, але мені це легше читати. :)


4

Я використовую цей метод, який використовує trim()для уникнення порожніх пробілів:

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

приклад, якщо у вас є декілька 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");
        }

ви можете використовувати TextUtils.isEmpty, як мій приклад! Удачі


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

3

Я TextUtilsдля цього використовував :

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

2

Ви також можете перевірити всі рядки EditText в одній умові If: наприклад

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

2

Я хотів зробити щось подібне. Але отримати значення тексту за допомогою редагування тексту та порівняти його, мов, (str=="")не працювало для мене. Тож кращим варіантом було:

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

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

Працював як шарм.


2

Спробуйте це, використовуючи If ELSE If умови. Ви можете легко перевірити свої поля 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

Ви можете викликати цю функцію для кожного редагування текстів:

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

Ви побачите повідомлення в LogCat ....


1

"перевірити це, впевнено, що вам сподобається.

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

за допомогою цього короткого коду ви можете видалити порожній пробіл на початку та в кінці рядка. Якщо рядок є "", поверніть повідомлення "помилка", інакше ви накладете рядок

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

Будь ласка, додайте коротке пояснення свого коду.
Terru_theTerror

stackoverflow.com/questions/61766882/… Ви можете мені допомогти вирішити мою проблему ??
Сонячно

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

}

зробіть це так для всіх п'яти редагування тексту


0

Ви можете використовувати setOnFocusChangeListener, він перевірить, коли зміниться фокус

        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

Я вважаю за краще використовувати прив'язку списку ButterKnife, а потім застосовувати дії зі списком. Наприклад, у випадку EditTexts у мене є наступні спеціальні дії, визначені у класі утиліти (у цьому випадку 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());
    }
};

А в коді перегляду я прив'язую EditTexts до списку і застосовую дії, коли мені потрібно перевірити представлення даних.

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

І звичайно, цей зразок можна розширити, щоб перевірити будь-яку властивість на будь-якій кількості переглядів. Єдиний мінус, якщо ви можете так назвати, - це надмірність поглядів. Значить, для використання цих EditTexts вам доведеться також прив’язувати їх до окремих змінних, щоб ви могли посилатися на них по імені або вам доведеться посилатися на них за позицією у списку ( edits.get(0)тощо). Особисто я просто пов'язую кожен з них двічі, один раз до однієї змінної та один раз до списку і використовую те, що підходить.


0

Щоб editText порожній, спробуйте інший простий спосіб:

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

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

чому ігнорувати випадок ?!
Тіма

0

Спробуйте це: його в Котліні

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

Дякую


0

У одному твердженні для мене працюють наступні:

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

Спочатку я витягую текст із, EditTextа потім перетворюю його в рядок і, нарешті, порівнюю його з ""використанням .equalsметоду.


0

ця функція працює для мене

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();
            }
            }
            }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.