Periksa apakah EditText kosong. [Tutup]

218

Saya punya 5 EditTextsdi android untuk dimasukkan pengguna. Saya ingin tahu apakah saya dapat memiliki metode untuk memeriksa semua 5 EditTextsjika mereka nol. Apakah ada cara untuk melakukan ini ??

Winona
sumber

Jawaban:

367

Saya melakukan sesuatu seperti ini sekali;

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
sumber
4
ya maaf, lupa kamu punya lima. Anda dapat membuat fungsi yang melakukan hal yang sama dan menyebutnya lima kali - atau Anda dapat mengulangi lima EditText.
cvaldemar
43
Maaf karena bertele-tele, tetapi Anda tidak menulis fungsi di java, mereka disebut metode ...
WiZarD
1
jika EditText.setInputType (InputType.TYPE_CLASS_NUMBER); nomor ini tidak berfungsi
Zala Janaksinh
64
Anda membuatnya lebih sulit daripada yang seharusnya: TextUtils.isEmpty (editText.getText ());
martyglaubitz
4
Saya biasanya menggunakan if (usernameEditText.getText (). ToString (). ToString (). IsEmpty ())
Daniel Jonker
185
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

ATAU Per Audrius

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

Jika fungsi kembali falseberarti edittext adalah not emptydan kembali trueberarti edittext adalah empty...

SBJ
sumber
29
+1 Memeriksa panjang lebih baik daripada memeriksa IMHO string kosong. Ini akan membantu untuk memangkas string sebelum memeriksa panjang sehingga karakter spasi tidak akan dihitung. Btw, ada alasan khusus untuk tidak menggunakan return etText.getText().toString().trim().length() == 0bukan cabang benar / salah?
Audrius
1
baik saya kira keterbacaan kode dan rawatan ...
WiZarD
jika EditText.setInputType (InputType.TYPE_CLASS_NUMBER); nomor kemudian gunakan ini.
Zala Janaksinh
Ya ini berfungsi karena tergantung pada panjangnya ...
SBJ
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
Siddharth Rout
145

Untuk memvalidasi EditText gunakan metode EditText # setError untuk kesalahan tampilan dan untuk memeriksa nilai kosong atau null gunakan kelas android inbuilt TextUtils.isEmpty (strVar) yang mengembalikan true jika strVar adalah nol atau panjang nol

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

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

Gambar diambil dari pencarian Google

MilapTank
sumber
Anda harus menambahkan yang lain )dalam pernyataan if.
ʍѳђ ઽ ૯ ท
1
@Androidenthusiasts terima kasih telah menunjukkan kesalahan ketik saya, saya telah memperbarui jawaban saya :)
MilapTank
Tidak dapat memahami bidang kedua "" usernameEditText "" "String strUserName = usernameEditText.getText (). ToString ();" di mana dinyatakan?
Sam
@ Sam nya typo saya saya harus memperbarui jawaban saya usernameEditTextadalah EditTextobjek dan sekarang berganti nama menjadi etUserName
MilapTank
1
.toString();tidak diperlukan
MariuszS
36

coba ini :

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

atau gunakan kelas TextUtils seperti ini:

if(TextUtils.isEmpty(strUserName)) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}
Houcine
sumber
3
... ini adalah cara terbaik untuk melakukan ini. Contoh lain memungkinkan input yang tidak diperhitungkan.
dell116
29

Jauh terlambat ke pesta di sini, tapi saya hanya perlu menambahkan TextUtils.isEmpty Android sendiri (CharSequence str)

Mengembalikan nilai true jika string adalah nol atau panjang 0

Jadi, jika Anda memasukkan lima EditText Anda dalam daftar, kode lengkapnya adalah:

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}
Qw4z1
sumber
isEmpty () tidak memeriksa ruang kosong, coba masukkan satu ruang
Hunt
3
@Hunt Itu benar, tapi kemudian tidak akan kosong atau kosong lagi. Mungkin TextUtils.isEmpty (sUserName.trim ()) akan sesuai, untuk menghapus semua blank, kalau-kalau pengguna telah memasukkan satu atau beberapa spasi kosong?
Qw4z1
isEmpty()Dibutuhkan CharSequence, yang Editablemeluas, sehingga tidak perlu untuk memanggil .toString()di atasnya.
karl
@karl Poin bagus! Memperbarui jawaban saya.
Qw4z1
19

Jawaban lain benar tetapi lakukan dengan cara yang singkat seperti

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}
Zar E Ahmer
sumber
11

Coba ini

TextUtils.isEmpty(editText.getText());
martyglaubitz
sumber
7

Mengapa tidak menonaktifkan saja tombol jika EditText kosong? IMHO Ini terlihat lebih profesional:

        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) {

        }
       });
Igor Zelaya
sumber
7

Anda dapat menggunakan length()dari EditText.

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

Saya biasanya melakukan apa yang SBJ usulkan, tetapi sebaliknya. Saya merasa lebih mudah untuk memahami kode saya dengan memeriksa hasil positif daripada negatif ganda. Anda mungkin bertanya bagaimana cara memeriksa EdiTexts yang kosong, tetapi yang Anda benar-benar ingin tahu adalah apakah ia memiliki konten dan bukan karena itu tidak kosong.

Seperti itu:

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

Sebagai SBJ saya lebih suka untuk kembali "tidak memiliki konten" (atau false) sebagai default untuk menghindari pengecualian karena saya borked cek konten saya. Dengan begitu Anda akan benar-benar yakin bahwa a truetelah "disetujui" oleh cek Anda.

Saya juga berpikir ifpanggilannya terlihat sedikit lebih bersih juga:

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

Ini sangat tergantung pada preferensi, tetapi saya menemukan ini lebih mudah dibaca. :)

sigcontSE
sumber
4

Saya menggunakan metode ini, yang digunakan trim()untuk menghindari ruang kosong:

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

contoh jika Anda memiliki beberapa 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
sumber
4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

Anda dapat menggunakan TextUtils.isEmpty seperti Contoh saya! Semoga berhasil

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

Saya menggunakan TextUtilsini:

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

Anda juga dapat memeriksa semua String EditTeks dalam satu kondisi If: seperti ini

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

Saya ingin melakukan hal serupa. Tetapi mendapatkan nilai teks dari mengedit teks dan membandingkannya seperti (str=="")tidak berfungsi untuk saya. Jadi pilihan yang lebih baik adalah:

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

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

Bekerja seperti pesona.

TheOddAbhi
sumber
2

Coba ini dengan menggunakan kondisi If ELSE If. Anda dapat memvalidasi bidang editText Anda dengan mudah.

 if(TextUtils.isEmpty(username)) {
                userNameView.setError("User Name Is Essential");
                return;
         } else  if(TextUtils.isEmpty(phone)) {
                phoneView.setError("Please Enter Your Phone Number");
                return;
            }
Sami Khan
sumber
2

Anda dapat memanggil fungsi ini untuk setiap teks edit:

public boolean isEmpty(EditText editText) {
    boolean isEmptyResult = false;
    if (editText.getText().length() == 0) {
        isEmptyResult = true;
    }
    return isEmptyResult;
}
dreinoso
sumber
1
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

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

if (UserID.equals("")) 

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

Anda akan melihat pesan di LogCat ....

Jothi
sumber
1

"Lihat ini, aku yakin kamu akan menyukainya."

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
sumber
1

gunakan TextUtils.isEmpty("Text here");untuk kode baris tunggal

Anand Savjani
sumber
1

dengan kode pendek ini Anda dapat menghapus ruang kosong di awal dan akhir string. Jika string adalah "" kembalikan pesan "kesalahan" kalau tidak Anda punya string

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();
}
Emiliano Spirito
sumber
Harap tambahkan penjelasan singkat tentang kode Anda.
Terru_theTerror
stackoverflow.com/questions/61766882/… dapatkah Anda membantu saya mengatasi masalah saya ??
Cerah
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");

}

lakukan seperti ini untuk semua lima teks edit

Aamirkhan
sumber
0

Anda dapat menggunakannya setOnFocusChangeListener, itu akan memeriksa kapan fokus berubah

        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!");
                }
            }
        }
    });
hoang lam
sumber
0
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}
Sydwell
sumber
0

Saya lebih suka menggunakan pengikatan daftar ButterKnife dan kemudian menerapkan tindakan pada daftar. Misalnya, dengan case EditTexts, saya memiliki tindakan kustom berikut yang didefinisikan dalam kelas utilitas (dalam hal ini 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());
    }
};

Dan dalam kode tampilan, saya mengikat EditText ke daftar dan menerapkan tindakan ketika saya perlu memeriksa tampilan.

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

Dan tentu saja pola ini dapat diperluas untuk memeriksa properti apa pun pada sejumlah tampilan. Satu-satunya downside, jika Anda bisa menyebutnya begitu, adalah redundansi pandangan. Berarti, untuk menggunakan EditText tersebut, Anda harus mengikatnya ke variabel tunggal juga sehingga Anda dapat merujuknya dengan nama atau Anda harus merujuknya dengan posisi di daftar ( edits.get(0), dll.). Secara pribadi, saya hanya mengikat masing-masing dua kali, sekali ke variabel tunggal dan sekali ke daftar dan menggunakan mana yang sesuai.

Saad Farooq
sumber
0

Untuk mengedit Teks kosong coba yang lain dengan cara sederhana ini:

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

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}
Guru
sumber
mengapa mengabaikan kasus ?!
Tima
0

Coba ini: ini ada di 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()
    }
}

Terima kasih

Sharmad Desai
sumber
0

Berikut ini bekerja untuk saya semua dalam satu pernyataan:

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

Pertama saya mengambil teks dari EditTextdan kemudian mengubahnya menjadi string dan akhirnya membandingkannya dengan ""menggunakan .equalsmetode.

Maihan Nijat
sumber
0

fungsi ini berfungsi untuk saya

checkempForm void pribadi () {

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