Подтвердить что ты не робот

Возвращает ли EditText.getText() значение null?

По всей сети я вижу примеры вроде edittext.getText().toString(). Я не вижу нулевой проверки. В документах я не вижу никаких утверждений, которые говорят, что это никогда не будет равным нулю.

Тем не менее, что говорят наблюдения; это когда-либо возвращает null?

4b9b3361

Ответ 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")};