¿EditText.getText () alguna vez devuelve nulo?

En toda la red veo ejemplos como edittext.getText().toString() . No veo ningún cheque nulo. En los documentos, no veo ninguna statement que diga que esto nunca será nulo.

Aún así, ¿qué dicen las observaciones? ¿Esto alguna vez regresa nulo?

getText() no devolverá null . Entonces no hay ninguna posibilidad para NPE en el siguiente método. getText devolverá cadena vacía si no hay cadena, que definitivamente no es null

 getText().toString(); 

Sin embargo, el texto de edición en sí puede ser null si no se inicializa correctamente. Por lo tanto, lo siguiente activará NPE

 editText.getText().toString(); 

No, EditText.getText() nunca devuelve null . Una forma de verificar esto es verificar el código fuente de Android para EditText.getText() :

EditText.java muestra:

 public Editable getText() { return (Editable) super.getText(); } 

Como EditText extends TextView , la llamada a super.getText() debe ser TextView.getText() . Ahora pasamos a TextView.getText() para ver qué devuelve:

TextView.java muestra:

 public CharSequence getText() { return mText; } 

Ahora necesitamos saber si mText alguna vez podría ser nulo.

Profundizando en la fuente TextView.java, vemos que mText se inicializa como una cadena vacía en el constructor TextView :

 public TextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mText = ""; … } 

Una vez que vemos que el constructor EditText llama al constructor TextView :

 public EditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } 

podemos concluir con seguridad que EditText.getText() nunca puede devolver null , porque tan pronto como se construye un EditText , mText recibe el valor de una cadena vacía.

Sin embargo , como señaló StinePike, EditText.getText() posiblemente pueda causar un NPE si EditText es null cuando realiza la llamada a getText() .

Con Android P SDK, se anota como anulable en la clase AppCompatEditText para que pueda devolver nulo.

Y de los documentos :

Devuelve el texto que se muestra en la vista. Si aún no se ha establecido un texto editable, se devolverá nulo.

 @Nullable public Editable getText() { return BuildCompat.isAtLeastP() ? super.getText() : super.getEditableText(); } 

No creo que vuelva a ser null .

Pero si desea verificar si el texto devuelto está vacío o no, le sugiero usar el método TextUtils.isEmpty()

Editar: – La documentación no establece nada con respecto al valor devuelto. Y por lo que he visto en el código fuente es que cuando inicializas un EditText, el valor de texto predeterminado se establece en "" . Por lo tanto, nunca volverá null

devolverá nulo porque cuando las aplicaciones se ejecutan vacías y devuelve nulo, use .getText.toString dentro de un botón haga clic en escucha, ahora cuando haga clic en el botón obtendrá el texto que ha ingresado en editText.

intenta de esta manera

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