your programing

EditText.getText ()가 null을 반환합니까?

lovepro 2020. 12. 30. 19:50
반응형

EditText.getText ()가 null을 반환합니까?


인터넷 전체에서 나는 edittext.getText().toString(). 널 체크가 보이지 않습니다. 문서에서 이것이 null이 될 수 없다는 진술을 보지 못했습니다.

그럼에도 불구하고 관찰 결과는 무엇을 말합니까? 이것은 null을 반환합니까?


getText()반환하지 않습니다 null. 따라서 다음과 같은 방법으로는 NPE가 발생할 가능성이 없습니다. getText확실히 아니 문자열이없는 경우 빈 문자열을 반환합니다null

getText().toString();

그러나 편집 텍스트 자체가 null제대로 초기화되지 않은 경우 다음이 NPE를 트리거합니다.

editText.getText().toString();

최신 정보:

2018 년 1 월 18 일 현재 가능합니다 .

이전 답변 :

아니요, EditText.getText()반환하지 않습니다 null. 이를 확인하는 한 가지 방법은 Android 소스 코드에서 EditText.getText()다음 을 확인하는 것입니다 .

EditText.java 는 다음을 표시합니다.

public Editable getText() {
    return (Editable) super.getText();
}

이후 EditText extends TextView로 호출은 super.getText()이어야합니다 TextView.getText(). 이제 TextView.getText()무엇이 반환되는지 살펴 보겠습니다 .

TextView.java 는 다음을 표시합니다.

public CharSequence getText() {
    return mText;
}

이제 mTextnull이 될 수 있는지 알아야합니다 .

TextView.java 소스를 자세히 살펴보면 생성자 mText에서 빈 문자열로 초기화되는 것을 볼 수 있습니다 TextView.

public TextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    mText = "";
}

EditText생성자가 생성자를 호출하는 것을 확인하면 TextView:

public EditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

이 생성 되 자마자 빈 문자열의 값이 주어 지기 때문에 EditText.getText()절대로 반환 할 수 없다는 결론을 내릴 수 있습니다 .nullEditTextmText

그러나 StinePike가 지적했듯이 EditText.getText()EditText 가를 null호출 할 때 인 경우 NPE가 발생할 수 있습니다 getText().


함께 안드로이드 P SDK 그것은에 널 (NULL)로 주석이 AppCompatEditText가 널 (null)을 반환 할 수 있도록 클래스입니다.

그리고 문서에서 :

뷰가 표시하는 텍스트를 반환합니다. 편집 가능한 텍스트가 아직 설정되지 않은 경우 null을 반환합니다.

@Override
@Nullable
public Editable getText() {
    if (Build.VERSION.SDK_INT >= 28) {
        return super.getText();
    }
    // A bug pre-P makes getText() crash if called before the first setText due to a cast, so
    // retrieve the editable text.
    return super.getEditableText();
}

나는 그것이 다시 돌아올 것이라고 생각하지 않는다 null.

그러나 반환 된 텍스트가 비어 있는지 확인하려면 TextUtils.isEmpty()방법을 사용 하는 것이 좋습니다.

편집 :- 문서는 반환 된 값에 대해 아무것도 언급하지 않습니다. 그리고 내가 소스 코드에서 본 것은 EditText를 초기화 할 때 기본 텍스트 값이로 설정된다는 것 ""입니다. 그래서 결코 돌아 오지 않을 것입니다null


앱이 빈 상태로 실행되고 null을 반환 할 때 버튼 클릭 리스너 내에서 .getText.toString을 사용하기 때문에 null을 반환합니다. 이제 버튼을 클릭하면 editText에 입력 한 텍스트를 가져옵니다.


이런 식으로 시도

String edittext = edittext.getText().toString();
if(edittext.length==0){ Log.d("null","the valueis null")};

참조 URL : https://stackoverflow.com/questions/19590472/does-edittext-gettext-ever-returns-null

반응형