Проверьте, если полей EditText пуст. [закрытый]

у меня 5 EditTexts в Android для ввода информации. Я хотел бы знать, могу ли я иметь метод для проверки всех 5 EditTexts если они равны null. Есть ли способ сделать это??

30 ответов


однажды я сделал нечто подобное;

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

или audrius

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

если функция return false значит полей EditText-это not empty и возврат true значит полей EditText-это empty...


для проверки использования 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;
 }

Image taken from Google search


попробуйте это :

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

путь поздно на вечеринку здесь, но я просто должен добавить собственный Android TextUtils.isEmpty (CharSequence str)

возвращает true, если строка имеет значение null или 0-length

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

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

другие ответы верны, но сделать это в короткий путь, как

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

попробуй такое

TextUtils.isEmpty(editText.getText());

можно использовать length() С EditText.

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

Я обычно делаю то, что 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;
}

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

и if называя это выглядит немного чище, а также:

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

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


Я использую этот метод, что использует 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;
}

пример, если у вас есть несколько EditTexts

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

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

вы можете использовать TextUtils.пустой, как мой пример ! Удачи!--2-->


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

почему бы просто не отключить кнопку, если 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) {

        }
       });

Я TextUtils для этого:

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

вы также можете проверить все строки EditText в одном условии If: как это

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

Я хотел сделать что-то подобное. Но получение текстового значения из текста редактирования и сравнение его как (str=="") не работал на меня. Поэтому лучшим вариантом было:

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

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

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


попробуйте это с помощью If ELSE If conditions. Вы можете легко проверить свои поля 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;
            }

вы можете вызвать эту функцию для каждого из редактируемых текстов:

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

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

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

if (UserID.equals("")) 

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

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


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


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

}

делай так для всех пяти редактировать текст


"проверить это, я уверен, вам понравится."

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

можно использовать 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!");
                }
            }
        }
    });

if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}

Я предпочитаю использовать 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), etc.). Лично я просто привязываю каждый из них дважды, один раз к одной переменной и один раз к списку и использую то, что подходит.


чтобы editText был пуст, попробуйте другой простой способ:

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

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

попробуйте это: его в Котлине

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

спасибо


следующие работы для меня все в одном заявлении:

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

сначала я получаю текст из EditText а затем преобразовать его в строку и, наконец, сравнить его с "" используя .equals метод.


эта функция работает для меня

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

С этого короткого кода можно удалить пустое пространство в начале и конце строки. Если строка ""возвращает сообщение "Ошибка", иначе у вас есть строка

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