EditText가 비어 있는지 확인하십시오. [닫은]


218

EditTexts사용자가 입력 할 수있는 안드로이드에 5 가 있습니다. 5 EditTexts가 모두 null인지 확인하는 방법이 있는지 알고 싶습니다 . 이것을 할 수있는 방법이 있습니까 ??

답변:


367

나는 이런 일을 한 번했다;

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
네, 죄송합니다. 5 명을 잊어 버렸습니다. 똑같은 일을하고 5 번 호출하는 함수를 만들거나 5 개의 EditText를 반복 할 수 있습니다.
cvaldemar

43
pedantic은 유감이지만, 자바에서 함수를 작성하지는 않습니다. 메소드라고합니다.
WiZarD

1
if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); 이 숫자가 작동하지 않습니다
Zala Janaksinh

64
모두 필요한 것보다 어렵게 만듭니다. TextUtils.isEmpty (editText.getText ());
martyglaubitz

4
나는 보통의 경우 (.. usernameEditText.getText의 toString ()의 toString () ()를 IsEmpty 함수 ().) 사용
다니엘 존커

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

    return true;
}

또는 audrius에 의하여

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

함수 반환이 falseedittext가 의미 not empty하고 return이 trueedittext가 empty...을 의미 하는 경우


29
+1 길이 확인이 빈 문자열 IMHO를 확인하는 것보다 낫습니다. 공백 문자를 계산하지 않도록 길이를 확인하기 전에 문자열을 자르는 것이 좋습니다. Btw, return etText.getText().toString().trim().length() == 0참 / 거짓 가지 대신 사용 하지 않는 특별한 이유는 무엇입니까?
Audrius

1
물론 나는 코드의 가독성과 유지 보수 ... 추측
마법사

if EditText.setInputType (InputType.TYPE_CLASS_NUMBER); 그런 다음 이것을 사용하십시오.
Zala Janaksinh

그것의 길이에 의존하기 때문에 예는이 ... 작업
SBJ

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

145

EditText를 유효성 검사하려면 ShowText 및 Edit Error # setError 메서드를 사용하고 show error 및 비어 있거나 null 값을 확인하려면 내장 안드로이드 클래스 TextUtils.isEmpty (strVar) 를 사용하십시오. strVar가 null이거나 길이가 0이면 true를 반환합니다.

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

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

Google 검색에서 가져온 이미지


)if 문 에 다른 것을 추가해야합니다 .
ʍѳђ ઽ ૯ ท

1
@Androidenthusiasts 내 오타 실수를 지적 해 주셔서 감사합니다. 내 답변을 업데이트했습니다 :)
MilapTank

두 번째 필드 ""usernameEditText "" "String strUserName = usernameEditText.getText (). toString ();"을 어디에서 선언 했습니까?
Sam

@Sam은 내 오타입니다. 내 대답 usernameEditTextEditText개체이며 이제 이름이 다음과 같이 바뀌 었습니다. etUserName
MilapTank

1
.toString();필요하지 않습니다
MariuszS

36

이 시도 :

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

3
... 이것이 가장 좋은 방법입니다. 다른 예는 설명되지 않은 입력을 허용합니다.
dell116

29

여기 파티에 늦었지만 안드로이드 자체 TextUtils.isEmpty (CharSequence str) 를 추가해야합니다.

문자열이 null이거나 길이가 0이면 true를 반환합니다.

따라서 다섯 개의 EditText를 목록에 넣으면 전체 코드는 다음과 같습니다.

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

isEmpty ()는 빈 공간을 확인하지 않습니다. 한
헌트

3
@Hunt 그건 사실이지만, 더 이상 비어 있거나 null이 아닐 것입니다. 사용자가 하나 또는 여러 개의 공백을 입력 한 경우를 대비하여 모든 공백을 제거하기 위해 TextUtils.isEmpty (sUserName.trim ())이 적절할 수 있습니다.
Qw4z1

isEmpty()소요 CharSequence되는 Editable확장, 그래서 호출 할 필요가 없습니다 .toString()그것에는.
karl

@karl 좋은 지적! 내 답변을 업데이트했습니다.
Qw4z1

19

다른 답변은 정확하지만 짧은 방법으로 수행하십시오.

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


7

EditText가 비어있는 경우 버튼을 비활성화하지 않는 이유는 무엇입니까? IMHO 더 전문적으로 보입니다.

        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

length()에서 사용할 수 있습니다 EditText.

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

6

나는 보통 SBJ가 제안한 것을하지만 다른 방법으로한다. 이중 부정 대신 긍정적 결과를 확인하여 코드를 이해하는 것이 더 쉽다는 것을 알게되었습니다. 빈 EdiText를 확인하는 방법을 요구할 수도 있지만 실제로 알고 싶은 것은 내용이 있고 비어 있지 않은지 여부입니다.

이렇게 :

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

환경 설정에 크게 의존하지만 읽기가 더 쉽습니다. :)


4

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
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

내 예제처럼 TextUtils.isEmpty를 사용할 수 있습니다! 행운을 빕니다


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

3

나는 TextUtils이것을 위해 사용 했다 :

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

2

하나의 If 조건에서 모든 EditText 문자열을 확인할 수도 있습니다.

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

2

나는 비슷한 것을하고 싶었다. 그러나 편집 텍스트에서 텍스트 값을 가져 와서 비교하는 것은 효과 (str=="")가 없었습니다. 더 나은 옵션은 다음과 같습니다.

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

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

매력처럼 일했다.


2

If ELSE If 조건을 사용하여이를 시도하십시오. 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

각 편집 텍스트에 대해이 함수를 호출 할 수 있습니다.

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

LogCat에 메시지가 표시됩니다 ....


1

"이것이 마음에 드는지 확인하십시오."

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

이 짧은 코드를 사용하면 문자열의 시작과 끝에서 빈 공간을 삭제할 수 있습니다. 문자열이 ""이면 "error"메시지를 반환하고 그렇지 않으면 문자열을

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

코드에 대한 간단한 설명을 추가하십시오.
Terru_theTerror

stackoverflow.com/questions/61766882/… 내 문제를 해결해 줄 수 있습니까 ??
Sunny

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

}

다섯 편집 텍스트 모두에 대해 이렇게하십시오


0

사용 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
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}

0

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를 목록에 바인딩하고 뷰를 확인해야 할 때 작업을 적용합니다.

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

물론이 패턴은 여러보기에서 속성을 확인하도록 확장 할 수 있습니다. 호출 할 수있는 유일한 단점은 뷰의 중복성입니다. 즉, 해당 EditText를 사용하려면 단일 변수에 바인드해야 이름으로 변수를 참조하거나 목록에서 위치별로 변수를 참조해야합니다 ( edits.get(0)등). 개인적으로, 나는 그들 각각을 두 번, 단일 변수에 한 번, 목록에 한 번 바인딩하고 적절한 것을 사용합니다.


0

텍스트를 비우려면 다음과 같이 간단한 방법으로 시도하십시오.

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

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

왜 사건을 무시합니까?!
Tima

0

이것을 시도하십시오 : 그것의 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

다음은 하나의 진술에서 모두 나를 위해 작동합니다.

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

먼저에서 텍스트를 검색 한 EditText다음 문자열로 변환하고 마지막으로 메소드 를 ""사용하여 비교합니다 .equals.


0

이 기능은 나를 위해 작동

비공개 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();
            }
            }
            }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.