Как узнать, сколько полей EditText задано для ввода? [dубликат]

modulePi модуль будет работать для odroid-c1

186
задан 11 October 2013 в 00:06

27 ответов

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

1
ответ дан 15 August 2018 в 15:53
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

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

if (UserID.equals("")) 

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

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

1
ответ дан 15 August 2018 в 15:53
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
ответ дан 15 August 2018 в 15:53

Я обычно делаю то, что предлагает 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!
}
]

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

)
161
ответ дан 15 August 2018 в 15:53
  • 1
    +1 Проверка длины лучше, чем проверка пустой строки IMHO. Это поможет обрезать строку перед проверкой длины, чтобы пробельные символы не учитывались. Btw, любая конкретная причина не использовать return etText.getText().toString().trim().length() == 0 вместо истинных / ложных ветвей? – Audrius 9 June 2011 в 14:58
  • 2
    ну, я думаю, читаемость кода и ремонтопригодность ... – WiZarD 25 June 2013 в 23:28
  • 3
    если EditText.setInputType (InputType.TYPE_CLASS_NUMBER); затем используйте это. – Zala Janaksinh 20 July 2013 в 11:32
  • 4
    Да, его работа зависит от его зависимости от длины ... – SBJ 22 July 2013 в 15:29

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

public boolean isEmpty(EditText editText) {
    boolean isEmptyResult = false;
    if (editText.getText().length() == 0) {
        isEmptyResult = true;
    }
    return isEmptyResult;
}
2
ответ дан 15 August 2018 в 15:53
[F1]
3
ответ дан 15 August 2018 в 15:53
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

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

4
ответ дан 15 August 2018 в 15:53

Вы можете использовать length() из EditText.

public boolean isEditTextEmpty(EditText mInput){
   return mInput.length() == 0;
}
8
ответ дан 15 August 2018 в 15:53

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

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);
        }
    }
});
0
ответ дан 15 August 2018 в 15:53

Вы можете использовать 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
ответ дан 15 August 2018 в 15:53

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

        }
       });
3
ответ дан 15 August 2018 в 15:53

Я использую этот метод, который использует 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
ответ дан 15 August 2018 в 15:53

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

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;
}
33
ответ дан 15 August 2018 в 15:53
  • 1
    ... это лучший способ сделать это. Другие примеры позволяют вводить данные, которые не учитываются. – dell116 16 March 2012 в 23:25

Чтобы editText пуст, попробуйте еще один простой способ:

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

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}
0
ответ дан 15 August 2018 в 15:53

Следующее работает для меня всего в одном утверждении:

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

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

0
ответ дан 15 August 2018 в 15:53

Для проверки EditText используйте метод EditText # setError для показа ошибки и для проверки пустого или нулевого значения используйте встроенный класс андроида 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;
 }

121
ответ дан 15 August 2018 в 15:53
  • 1
    Вот что я смотрел .. – Abhijit Chakra 23 May 2015 в 08:25
  • 2
    вы должны добавить еще один ) в оператор if. – Mohsen 23 June 2015 в 10:18
  • 3
    @Androidenthusiasts спасибо, что указал на мою ошибку в типографии. У меня есть обновленный ответ :) – MilapTank 7 July 2015 в 08:29
  • 4
    @milapTank - вам очень приятно :) goodday – Mohsen 7 July 2015 в 11:52
  • 5
    Не удалось понять второе поле & quot; usernameEditText & quot; & quot; & quot; String strUserName = usernameEditText.getText (). toString (); & Quot; где оно объявлено? – Sam 20 April 2016 в 11:35

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

if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
                Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
            }
2
ответ дан 15 August 2018 в 15:53

Другие ответы верны, но делайте это в кратчайшие сроки, как

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}
16
ответ дан 15 August 2018 в 15:53

Я использовал TextUtils для этого:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
3
ответ дан 15 August 2018 в 15:53
[D0] Простой. Используйте это:

Editext ed = findViewById(R.id.uridname);
String name = ed.getText().toString();
if (name.isEmpty())
{
    ed.setError("");
    return;
}
0
ответ дан 15 August 2018 в 15:53

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

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

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

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}
26
ответ дан 15 August 2018 в 15:53
  • 1
    isEmpty () не проверяет пустое пространство, попробуйте ввести одно пространство – Hunt 17 March 2013 в 18:43
  • 2
    @Hunt Это правда, но тогда это не будет пустым или нулевым. Может быть, TextUtils.isEmpty (sUserName.trim ()) подходит, чтобы удалить все пробелы, на случай, если пользователь ввел одно или несколько пробелов? – Qw4z1 17 March 2013 в 20:18
  • 3
    isEmpty() принимает CharSequence, который Editable продолжается, поэтому нет необходимости называть .toString() на нем. – karl 21 August 2014 в 04:04

Попробуйте это: его в 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()
    }
}

Спасибо

0
ответ дан 15 August 2018 в 15:53

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

@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
ответ дан 15 August 2018 в 15:53

Попробуйте использовать это, используя ELSE Если условия. Вы можете легко проверить свои поля 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
ответ дан 15 August 2018 в 15:53
[F1]
0
ответ дан 15 August 2018 в 15:53

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

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();
            }
            }
            }
1
ответ дан 15 August 2018 в 15:53

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

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

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

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

2
ответ дан 15 August 2018 в 15:53

Другие вопросы по тегам:

Похожие вопросы: