Проверьте, является ли 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;
}
cvaldemar
источник
4
да извини, забыл, что у тебя было пять. Вы могли бы создать функцию, которая делала бы то же самое, и вызывать ее пять раз - или вы могли бы перебрать пять EditText.
cvaldemar
43
Извините за педантичность, но вы не пишете функции в Java, они называются методами ...
WiZarD
1
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); число это не работает
Zala Janaksinh
64
Вы делаете это сложнее, чем нужно: TextUtils.isEmpty (editText.getText ());
martyglaubitz
4
Я обычно использую if (usernameEditText.getText (). ToString (). ToString (). IsEmpty ())
Даниэль Джонкер,
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 is, not emptyа return trueозначает, что edittext is empty...

SBJ
источник
29
+1 Проверка длины лучше, чем проверка на пустую строку ИМХО. Это поможет обрезать строку перед проверкой длины, чтобы пробельные символы не учитывались. Кстати, какая-то конкретная причина не использовать return etText.getText().toString().trim().length() == 0вместо истинных / ложных ветвей?
Аудрюс
1
ну, я думаю, читаемость кода и ремонтопригодность ...
WiZarD
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); номер затем используйте это.
Зала Джанаксин,
Да, это работает, потому что это зависит от длины ...
SBJ
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
Сиддхарт Роу
145

Для проверки EditText используйте метод EditText # setError для показа ошибки и для проверки пустого или нулевого значения, используйте встроенный класс android TextUtils.isEmpty (strVar), который возвращает true, если strVar равен нулю или нулевой длине

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

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

Изображение взято из поиска Google

MilapTank
источник
Вы должны добавить еще один )в операторе if.
ท ઽ ૯ ท
1
@Androidenthusiasts спасибо за указание на мою опечатку, я
обновил
Не удалось понять второе поле "" usernameEditText "" "String strUserName = usernameEditText.getText (). ToString ();" где оно объявлено?
Сэм
@Sam это моя опечатка, я usernameEditTextEditTextetUserName
обновил
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 str)

Возвращает true, если строка имеет нулевое значение или длину 0

Таким образом, если вы поместите свои пять EditTexts в список, полный код будет:

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}
Qw4z1
источник
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
}
Zar E Ahmer
источник
11

Попробуй это

TextUtils.isEmpty(editText.getText());
martyglaubitz
источник
7

Почему бы просто не отключить кнопку, если EditText пуст? ИМХО это выглядит более профессионально

        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;
}
JPMagalhaes
источник
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!
}

Это очень сильно зависит от предпочтений, но я считаю, что это легче читать. :)

sigcontSE
источник
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;
}
Jorgesys
источник
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));
}
wildapps
источник
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 }

Работал как шарм.

TheOddAbhi
источник
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;
}
dreinoso
источник
1
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

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

if (UserID.equals("")) 

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

Вы увидите сообщение в LogCat ....

Jothi
источник
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);
        }
    }
});
Aris_choice
источник
1

использовать TextUtils.isEmpty("Text here");для однострочного кода

Ананд Савьяни
источник
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
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}
Sydwell
источник
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

Чтобы отредактировать текст, попробуйте другой простой способ:

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();
            }
            }
            }
Таха Мозада
источник