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;
}
이제 mText
null이 될 수 있는지 알아야합니다 .
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()
절대로 반환 할 수 없다는 결론을 내릴 수 있습니다 .null
EditText
mText
그러나 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
'your programing' 카테고리의 다른 글
R Markdown HTML 출력의 출력 너비 조정 (0) | 2020.12.30 |
---|---|
유니 코드 정규화 (0) | 2020.12.30 |
레코드 수를 계산하고 data.table의 각 그룹 내에서 행 번호를 생성합니다. (0) | 2020.12.30 |
Android Studio : 검색 결과에서 빌드 폴더의 파일 제외 (0) | 2020.12.30 |
Windows에 설치 한 후 Docker를 시작할 수 없습니다. (0) | 2020.12.30 |