遍佈網絡我看到的例子如edittext.getText().toString()
。我沒有看到任何空的檢查。在文檔中,我沒有看到任何可以說這永遠不會爲空的聲明。EditText.getText()是否返回null?
不過,這些觀察結果是怎麼說的;這是否會返回null?
遍佈網絡我看到的例子如edittext.getText().toString()
。我沒有看到任何空的檢查。在文檔中,我沒有看到任何可以說這永遠不會爲空的聲明。EditText.getText()是否返回null?
不過,這些觀察結果是怎麼說的;這是否會返回null?
getText()
不會返回null
。所以NPE在下面的方法中沒有機會。該getText
將返回空字符串,如果沒有字符串,它絕對不是null
getText().toString();
然而EditText上本身可以null
如果沒有正確的初始化,因此,以下將觸發NPE
editText.getText().toString();
作爲獎勵,你甚至不能'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
如果你檢查'TextView'的源代碼,那麼你會看到'getText()'永遠不會返回'null'。 – d3m0li5h3r
EditText不會,但EditTextPreference將返回null並導致NPE(如果未被阻止)。 –
嘗試以這種方式
String edittext = edittext.getText().toString();
if(edittext.length==0){ Log.d("null","the valueis null")};
我不這麼認爲它永遠不會返回null
。
但是,如果你想查詢返回的文本是否爲空可能我建議使用TextUtils.isEmpty()
方法
編輯: -文檔沒有規定關於返回的任何有價值的東西。從我在源代碼中看到的是,當初始化EditText時,默認文本值設置爲""
。所以它永遠不會返回null
無,EditText.getText()
永不返回null
。驗證這一點的方法之一是檢查Android源代碼爲EditText.getText()
:
public Editable getText() {
return (Editable) super.getText();
}
由於EditText extends TextView
,調用super.getText()
必須TextView.getText()
。現在我們進入到TextView.getText()
看看它返回:
public CharSequence getText() {
return mText;
}
現在,我們需要知道,如果mText
可能永遠不會空。
挖掘更深的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()
都不可能導致NPE如果您的EditText是null
它使呼叫getText()
時。
它會返回null,因爲當應用程序運行它的空並且它返回null時,在按鈕點擊偵聽器中使用.getText.toString,現在當您單擊按鈕時,它將獲得您在editText上輸入的文本。
過去了您的代碼... – morroko
String s = edittext.getText()。toString();如果(s!= null)返回true; –
我的問題是,EditText.getText()會返回null嗎?在這種情況下,您的代碼將導致NPE。 – AppleGrew