2013-10-25 2 views
41

그물 전체에 edittext.getText().toString()과 같은 예가 표시됩니다. null 체크가 보이지 않습니다. 문서에서 나는 이것이 결코 null이 될 것이라고 말하지는 않을 것이다.EditText.getText()가 null을 반환합니까?

그래도 관측 내용은 무엇입니까? 이것이 null을 반환합니까?

+0

코드 뒤 ... – morroko

+0

String s = edittext.getText(). toString(); if (s! = null)이 true를 반환하면; –

+3

제 질문은 EditText.getText()가 null을 반환 할 것입니까? 이 경우 @tsp 코드가 NPE가됩니다. – AppleGrew

답변

53

getText()null를 돌려 보내지 않을 것이다. 따라서 NPE는 다음과 같은 방법을 사용할 수 없습니다. 따라서 다음은 NPE

editText.getText().toString(); 
+24

보너스로'setText (null)'조차도 사용할 수 없습니다. 시도하면 내부적으로 변환됩니다 (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/widget/TextView.java). # TextView.setText % 28java.lang.CharSequence % 2Candroid.widget.TextView.BufferType % 2Cboolean % 2Cint % 29) 빈 문자열. – Geobits

+2

'TextView'의 소스 코드를 확인하면'getText()'가'null'을 반환하지 않는다는 것을 알 수 있습니다. – d3m0li5h3r

+1

EditText는 그렇지 않지만 EditTextPreference는 null을 반환하고 막지 않으면 NPE가 발생합니다. –

-7

내가 그래서 이제까지 null을 반환 해달라고 생각이 방법

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

나는 그것을 downvoted 사람이 아니지만 귀하의 예제에서'edittext'는'null'이 아니며 빈 문자열입니다. 그것이 'null'이라면,'edittext.length'를 호출하면 NPE를 던질 것입니다. 또한'length()'는 메소드 BTW입니다. – Piovezan

+4

또한 "edittext"를 String 및 EditText 변수의 이름으로 사용했으며 질문에 대한 답이 귀하의 질문에 맞지 않았습니다. – Kuffs

+0

thats 예를 들어 프로그래머가 당연한 예입니다. –

1

에보십시오.

하지만 당신은 반환 된 텍스트가 비어 있는지 확인하려면 아니면 내가 TextUtils.isEmpty() 방법을

편집을 사용하는 것이 좋습니다 수없는 경우 : - 문서하지 않는 것도 반환 된 값에 대한을 말한다. 그리고 내가 소스 코드에서 본 것은 EditText를 초기화 할 때 기본 텍스트 값이 ""으로 설정된다는 것입니다. 그래서 그것은 결코 돌아 오지 않을 것이다 null

21

없음을 트리거, 제대로 초기화하지 않을 경우

getText().toString(); 

null는 그러나 글고 자체가 null 될 수 없습니다 확실히 더 문자열이없는 경우 getText는 빈 문자열을 반환합니다 , EditText.getText()null을 반환하지 않습니다. 이를 확인하는 한 가지 방법은 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이 될 수 있는지 알 필요가 있습니다. 우리가 mTextTextView 생성자에서 빈 문자열로 초기화되는 것을 볼 수있는 TextView.java 소스에 더 깊이 파고

:

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이 발생하면 cted, mText에는 빈 문자열 값이 지정됩니다.그러나

, StinePike 지적대로 getText()에 호출 할 때 글고 치기가 null 경우, EditText.getText()는 아마도 NPE가 발생할 수 있습니다.

0

빈을 실행하고 null을 반환하면 버튼 클릭 리스너 내에서 .getText.toString을 사용하므로 button을 클릭하면 editText에 입력 한 텍스트가 표시되므로 null이 반환됩니다.

관련 문제