EditText öğesinin boş olup olmadığını kontrol edin. [kapalı]


218

EditTextsKullanıcıların girmesi için android 5 var . Ben tüm 5 EditTextsnull olup olmadığını kontrol etmek için bir yöntem olabilir bilmek istiyorum . Bunu yapmanın bir yolu var mı ??

Yanıtlar:


367

Bir keresinde böyle bir şey yaptım;

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
evet üzgünüm, beş tane olduğunu unuttum. Aynı şeyi yapan bir işlev yapabilir ve beş kez çağırabilirsiniz - ya da beş EditText üzerinde döngü yapabilirsiniz.
cvaldemar


1
EditText.setInputType (InputType.TYPE_CLASS_NUMBER); Bu sayı çalışmıyor
Zala Janaksinh

64
hepiniz olması gerekenden daha zor hale getirir: TextUtils.isEmpty (editText.getText ());
martyglaubitz

4
Genellikle if (usernameEditText.getText (). ToString (). ToString (). İsEmpty ())
Daniel Jonker

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

    return true;
}

VEYA audrius Başına

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

İşlev dönüş falsemetin düzenleme anlamına gelir not emptyve dönüş truemetin düzenleme anlamına gelirse empty...


29
+1 Uzunluğu kontrol etmek, IMHO boş dizesini kontrol etmekten daha iyidir. Uzunluğu kontrol etmeden önce dizeyi kırpmaya yardımcı olur, böylece boşluk karakterleri sayılmaz. Btw, return etText.getText().toString().trim().length() == 0doğru / yanlış dallar yerine kullanmamanın özel bir nedeni var mı?
Audrius

1
iyi kod okunabilirliği ve sürdürülebilirliği sanırım ...
WiZarD

EditText.setInputType (InputType.TYPE_CLASS_NUMBER); sonra bunu kullanın.
Zala Janaksinh

Evet çalışıyor çünkü uzunluğuna bağlıdır ...
SBJ

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

145

Doğrulama için EditText kullanımı EditText # setError göstermek hata ve robot sınıf dahili boş veya boş değer kullanımını kontrol etmek için bir yöntem TextUtils.isEmpty (strVar) strVar boş veya sıfır uzunlukta ise doğru döndürür

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

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

Google aramadan alınan resim


)if ifadesine başka bir tane eklemelisiniz .
ท ઽ ૯ ท

1
@Androidenthusiasts yazım hata işaret ettiğim için teşekkürler cevabımı güncelledim :)
MilapTank

İkinci alan "" usernameEditText "" "Dize strUserName = usernameEditText.getText (). ToString ();" nerede bildirildi?
Sam

Benim cevap güncellemek zorunda olan benim yazım hatası @Sam usernameEditTextolan EditTextnesne ve şimdi onun yeniden adlandırıldı etUserName
MilapTank

1
.toString();gerekli değildir
MariuszS

36

bunu dene :

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

veya şu gibi TextUtils sınıfını kullanın :

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

3
... bunu yapmanın en iyi yolu bu. Diğer örnekler, hesaba katılmayan girdilere izin verir.
dell116

29

Burada partiye geç, ama ben sadece Android kendi TextUtils.isEmpty (CharSequence str) eklemek zorunda

Dize null veya 0 uzunlukta olursa true değerini döndürür

Beş EditTexts öğenizi bir listeye koyarsanız, tam kod şöyle olur:

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

isEmpty boşluk için () doesnt kontrol et, bir boşluk girmeyi deneyin
Hunt

3
@Hunt Doğru, ama o zaman artık boş veya boş olmaz. Belki kullanıcının bir veya birkaç boşluk girmesi durumunda, tüm boşlukları kaldırmak için TextUtils.isEmpty (sUserName.trim ()) uygun olur.
Qw4z1

isEmpty()Bir sürer CharSequence, hangi Editableuzanır, bu yüzden aramaya gerek yoktur .toString()üzerine.
karl

@karl İyi bir nokta! Cevabım güncellendi.
Qw4z1

19

Diğer cevaplar doğrudur, ancak kısa bir şekilde yapın

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


7

EditText boşsa düğmeyi neden devre dışı bırakmıyorsunuz? IMHO Bu daha profesyonel görünüyor:

        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

Sen kullanabilirsiniz length()gelen EditText.

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

6

Genelde SBJ'nin önerisini yapıyorum ama tam tersini yapıyorum . Çift negatifler yerine olumlu sonuçlar kontrol ederek kodumu anlamayı daha kolay buluyorum. Boş EdiTexts'i nasıl kontrol edeceğinizi soruyor olabilirsiniz, ancak gerçekten bilmek istediğiniz şey, içeriğin boş olup olmadığı değil.

Şöyle ki:

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 ben dönmek tercih (veya "hiçbir içeriğe sahip" falseBenim içerik çek borked çünkü önlemek istisnalara varsayılan olarak). Bu şekilde,true a'nın çekleriniz tarafından "onaylanmış" .

Ben de ifarama biraz daha temiz görünüyor düşünüyorum :

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

Tercihlere çok bağlı, ama bunu okumayı daha kolay buluyorum. :)


4

trim()Boşlukları önlemek için kullanılan bu yöntemi kullanın :

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

birkaç EditText'iniz varsa bir örnek

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

benim örneğim gibi TextUtils.isEmpty kullanabilirsiniz! İyi şanslar


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

3

Bunun için kullandım TextUtils:

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

2

Tüm EditText Dizelerini tek bir If durumunda kontrol edebilirsiniz: this like this like

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

2

Benzer bir şey yapmak istedim. Ancak metin değerini düzenleme metninden almak ve karşılaştırmak (str=="")benim için işe yaramadı. Yani daha iyi bir seçenek:

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

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

Bir cazibe gibi çalıştı.


2

Bunu ELSE If koşullarını kullanarak deneyin. EditText alanlarınızı kolayca doğrulayabilirsiniz.

 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

Düzenleme metinlerinin her biri için bu işlevi çağırabilirsiniz:

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

İletiyi LogCat'te göreceksiniz ....


1

"hoşuna gidecek bu im göz atın."

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

bu kısa kodla dizenin başında ve sonunda boş alanı silebilirsiniz. Dize "" iletisini döndürürse "hata" ise başka bir dize

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

Lütfen kodunuzla ilgili kısa bir açıklama ekleyin.
Terru_theTerror

stackoverflow.com/questions/61766882/… Sorunumla ilgili bana yardımcı olabilir misiniz ??
Güneşli

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

}

beş düzenleme metninin tümü için bunu yap


0

Kullanabilirsiniz, setOnFocusChangeListenerodak değişimini kontrol edecektir

        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

ButterKnife liste bağlamasını kullanmayı ve sonra listeye eylemleri uygulamayı tercih ederim . Örneğin, EditTexts durumunda, ben bir yardımcı program sınıfında tanımlanmış aşağıdaki özel eylemleri var (bu durumda 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());
    }
};

Ve görünüm kodunda, bir listeye EditTexts bağlamak ve görünümleri kontrol etmek gerektiğinde eylemleri uygulamak.

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

Ve elbette bu model, herhangi bir sayıda görünümdeki herhangi bir özelliği kontrol etmek için genişletilebilir. Tek dezavantajı, bunu diyebilirseniz, görüşlerin fazlalığıdır. Yani, bu EditTexts'i kullanmak için, bunları tek değişkenlere de bağlamanız gerekir, böylece isimlere göre referans verebilirsiniz ya da listedeki ( edits.get(0)vb.) Pozisyonlarına göre referans vermeniz gerekir . Şahsen, sadece her birini iki kez, bir kez tek bir değişkene ve bir kez bir listeye bağlarım ve hangisini uygunsa kullanırım.


0

EditText boştur, başka bir basit deneyin:

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

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

neden davayı görmezden geliyor ?!
Tima

0

Şunu deneyin: its in 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()
    }
}

teşekkür ederim


0

Aşağıdakiler benim için tek bir ifadede çalışıyor:

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

Önce bir metin alıyorum EditTextve sonra bir dizeye dönüştürmek ve son olarak yöntemi ""kullanarak karşılaştırarak .equals.


0

bu işlev benim için çalışıyor

özel geçersiz 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();
            }
            }
            }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.