Kiểm tra xem EditText có trống không. [đóng cửa]


218

Tôi có 5 EditTextstrong Android cho người dùng nhập liệu. Tôi muốn biết nếu tôi có thể có một phương pháp để kiểm tra tất cả 5 EditTextsnếu chúng là null. Có cách nào để làm điều này ??

Câu trả lời:


367

Tôi đã làm một cái gì đó như thế này một lần;

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
vâng xin lỗi, quên rằng bạn đã có năm. Bạn có thể tạo một chức năng đã làm điều tương tự và gọi nó năm lần - hoặc bạn có thể lặp qua năm lần chỉnh sửa.
cvaldemar

43
Xin lỗi vì có tính mô phạm, nhưng bạn không viết các hàm trong java, chúng được gọi là các phương thức ...
WiZarD

1
nếu EditText.setInputType (InputType.TYPE_CLASS_NUMBER); số này không hoạt động
Zala Janaksinh

64
bạn sẽ làm cho nó khó hơn nó cần phải là: TextUtils.isEmpty (editText.getText ());
martyglaubitz

4
Tôi thường sử dụng 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;
}

HOẶC Theo mỗi audrius

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

Nếu hàm trả về falsenghĩa là edittext not emptyvà return truecó nghĩa là edittext là empty...


29
+1 Kiểm tra độ dài tốt hơn kiểm tra IMHO chuỗi trống. Nó sẽ giúp cắt chuỗi trước khi kiểm tra độ dài để các ký tự khoảng trắng sẽ không được tính. Btw, bất kỳ lý do cụ thể của việc không sử dụng return etText.getText().toString().trim().length() == 0thay vì các nhánh đúng / sai?
Audrius

1
tôi đoán là khả năng đọc và bảo trì mã ...
WiZarD

nếu EditText.setInputType (InputType.TYPE_CLASS_NUMBER); số sau đó sử dụng này.
Zala Janaksinh

Có, nó hoạt động vì nó phụ thuộc vào độ dài ...
SBJ

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

145

Để xác thực EditText, hãy sử dụng phương thức EditText # setError để hiển thị lỗi và để kiểm tra giá trị rỗng hoặc null, hãy sử dụng lớp Android TextUtils.isEmpty (strVar) trả về true nếu strVar có độ dài bằng 0 hoặc 0

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

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

Hình ảnh được lấy từ tìm kiếm của Google


bạn nên thêm một )câu lệnh khác trong câu lệnh if.
ʍѳђ ઽ ૯

1
@Androidenthusiasts cảm ơn vì đã chỉ ra lỗi đánh máy của tôi, tôi đã cập nhật câu trả lời của mình :)
MilapTank 7/07/2015

Không thể hiểu trường thứ hai "" usernameEditText "" "Chuỗi strUserName = usernameEditText.getText (). ToString ();" nó được khai báo ở đâu?
Sam

@Sam là lỗi đánh máy của tôi, tôi đã cập nhật câu trả lời của mình usernameEditTextEditTextđối tượng và bây giờ nó được đổi tên thành etUserName
MilapTank

1
.toString();là không bắt buộc
MariuszS

36

thử cái này :

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

hoặc sử dụng lớp TextUtils như thế này:

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

3
... Đây là cách tốt nhất để làm điều này. Các ví dụ khác cho phép đầu vào không được tính.
dell116

29

Đến bữa tiệc muộn ở đây, nhưng tôi chỉ cần thêm TextUtils.isEmpty của riêng Android (CharSequence str)

Trả về true nếu chuỗi là null hoặc có độ dài 0

Vì vậy, nếu bạn đặt năm EditTexts của mình vào một danh sách, mã đầy đủ sẽ là:

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

isEmpty () không kiểm tra chỗ trống, hãy thử nhập một khoảng trắng
Hunt

3
@Hunt Điều đó đúng, nhưng sau đó nó sẽ không còn trống hoặc null nữa. Có lẽ TextUtils.isEmpty (sUserName.trim ()) sẽ phù hợp, để xóa tất cả các khoảng trống, chỉ trong trường hợp người dùng đã nhập một hoặc một số khoảng trắng?
Qw4z1 17/03/13

isEmpty()mất một CharSequence, mà Editablekéo dài, vì vậy không cần phải gọi .toString()nó.
karl

@karl Điểm tốt! Cập nhật câu trả lời của tôi.
Qw4z1

19

Các câu trả lời khác là đúng nhưng làm theo cách ngắn gọn như

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


7

Tại sao không tắt nút nếu EditText trống? IMHO Điều này có vẻ chuyên nghiệp hơn:

        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

Bạn có thể sử dụng length()từ EditText.

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

6

Tôi thường làm những gì SBJ đề xuất, nhưng ngược lại. Tôi chỉ đơn giản thấy dễ hiểu mã của mình hơn bằng cách kiểm tra kết quả dương tính thay vì phủ định kép. Bạn có thể yêu cầu làm thế nào để kiểm tra EdiTexts trống, nhưng điều bạn thực sự muốn biết là nó có bất kỳ nội dung nào không và nó không trống.

Thích như vậy:

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, tôi thích trả về "không có nội dung" (hoặc false) như mặc định để tránh các trường hợp ngoại lệ vì tôi đã kiểm tra nội dung của mình. Bằng cách đó, bạn sẽ hoàn toàn chắc chắn rằng a trueđã được "phê duyệt" bởi séc của bạn.

Tôi cũng nghĩ rằng cách ifgọi nó trông cũng sạch sẽ hơn một chút:

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

Nó phụ thuộc rất nhiều vào sở thích, nhưng tôi thấy điều này dễ đọc hơn. :)


4

Tôi sử dụng phương pháp này, sử dụng trim()để tránh các khoảng trắng:

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

một ví dụ nếu bạn có một số Chỉnh sửa dữ liệu

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

bạn có thể sử dụng TextUtils.isEmpty như Ví dụ của tôi! Chúc may mắn


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

3

Tôi đã sử dụng TextUtilscho điều này:

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

2

Bạn cũng có thể kiểm tra tất cả các Chuỗi Chỉnh sửa trong một Nếu điều kiện: như thế này

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

2

Tôi muốn làm một cái gì đó tương tự. Nhưng nhận được giá trị văn bản từ văn bản chỉnh sửa và so sánh nó như (str=="")không làm việc cho tôi. Vì vậy, lựa chọn tốt hơn là:

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

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

Làm việc như người ở.


2

Hãy thử điều này với việc sử dụng If ELSE If điều kiện. Bạn có thể xác nhận các trường editText của bạn một cách dễ dàng.

 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

Bạn có thể gọi chức năng này cho từng văn bản chỉnh sửa:

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

Bạn sẽ thấy thông báo trong LogCat ....


1

"kiểm tra này tôi chắc chắn bạn sẽ thích 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

với mã ngắn này, bạn có thể xóa khoảng trống ở đầu và cuối chuỗi. Nếu chuỗi là "" trả lại thông báo "lỗi" thì bạn đã tạo chuỗi

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

Vui lòng thêm một lời giải thích ngắn về mã của bạn.
Terru_theTerror

stackoverflow.com/questions/61766882/ Bạn có thể giúp tôi giải quyết vấn đề của mình không ??
Nắng

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

}

làm như thế này cho tất cả năm văn bản chỉnh sửa


0

Bạn có thể sử dụng setOnFocusChangeListener, nó sẽ kiểm tra khi thay đổi tiêu cự

        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

Tôi thích sử dụng ràng buộc danh sách ButterKnife và sau đó áp dụng các hành động trong danh sách. Ví dụ: với trường hợp EditTexts, tôi có các hành động tùy chỉnh sau được xác định trong một lớp tiện ích (trong trường hợp này 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());
    }
};

Và trong mã xem, tôi liên kết EditTexts vào một danh sách và áp dụng các hành động khi tôi cần kiểm tra các khung nhìn.

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

Và tất nhiên mẫu này có thể mở rộng để kiểm tra bất kỳ thuộc tính nào trên bất kỳ số lượt xem nào. Nhược điểm duy nhất, nếu bạn có thể gọi nó là, sự dư thừa của lượt xem. Có nghĩa là, để sử dụng các EditTexts đó, bạn cũng sẽ phải liên kết chúng với các biến đơn để bạn có thể tham chiếu chúng theo tên hoặc bạn sẽ phải tham chiếu chúng theo vị trí trong danh sách ( edits.get(0), v.v.). Cá nhân, tôi chỉ liên kết mỗi trong số chúng hai lần, một lần vào một biến duy nhất và một lần vào danh sách và sử dụng tùy theo mục nào.


0

Để chỉnh sửa văn bản trống, hãy thử một cách đơn giản khác:

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

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

Tại sao bỏ qua trường hợp?!
Tima

0

Hãy thử điều này: nó ở 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()
    }
}

Cảm ơn bạn


0

Các công việc sau đây cho tôi tất cả trong một tuyên bố:

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

Đầu tiên tôi lấy một văn bản từ EditTextvà sau đó chuyển đổi nó thành một chuỗi và cuối cùng so sánh nó với ""việc sử dụng .equalsphương thức.


0

chức năng này làm việc cho tôi

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();
            }
            }
            }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.