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 ??

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

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...


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


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

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

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
}


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

        }
       });

7

Anda dapat menggunakan length()dari EditText.

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

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. :)


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

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

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


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

3

Saya menggunakan TextUtilsini:

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

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

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.


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

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

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 ....


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


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

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


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

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

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.


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

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


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.


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();
            }
            }
            }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.