Возвращает ли EditText.getText() значение null?
По всей сети я вижу примеры вроде edittext.getText().toString()
. Я не вижу нулевой проверки. В документах я не вижу никаких утверждений, которые говорят, что это никогда не будет равным нулю.
Тем не менее, что говорят наблюдения; это когда-либо возвращает null?
Ответы
Ответ 1
getText()
не вернет null
. Таким образом, NPE не имеет шансов для следующего метода. getText
возвращает пустую строку, если нет строки, которая определенно не null
getText().toString();
Однако сам редактор может быть null
, если он не инициализирован правильно. Следовательно, следующее вызовет NPE
editText.getText().toString();
Ответ 2
Нет, 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()
может вызвать NPE, если ваш EditText null
, когда он вызывает вызов getText()
.
Ответ 3
Я не думаю, что он когда-нибудь вернется null
.
Но если вы хотите проверить, является ли возвращенный текст пустым или нет, я могу предложить использовать метод TextUtils.isEmpty()
Изменить: - В документации не указано ничего относительно возвращаемого значения. И из того, что я видел в исходном коде, является то, что при инициализации EditText стандартное текстовое значение устанавливается на ""
. Поэтому он никогда не вернет null
Ответ 4
он вернет значение null, потому что, когда приложения запускаются пустым и он возвращает null, используйте кнопку .getText.toString внутри кнопки click listener, теперь, когда вы нажимаете кнопку, вы получите текст, который вы ввели в editText.
Ответ 5
попробуйте таким образом
String edittext = edittext.getText().toString();
if(edittext.length==0){ Log.d("null","the valueis null")};