¿EditText.getText () alguna vez devuelve null?

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

Sin embargo, ¿qué dicen las observaciones? ¿Esto nunca vuelve nulo?

getText() no devolverá null . Por lo tanto, no existe la posibilidad de NPE en el método siguiente. El getText devolverá una cadena vacía si no hay una cadena, que definitivamente no es null

 getText().toString(); 

Sin embargo, el propio edittext 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 comprobar el código fuente de Android para EditText.getText() :

EditText.java muestra:

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

Dado que EditText extends TextView , la llamada a super.getText() debe ser TextView.getText() . Ahora pasamos a TextView.getText() para ver lo que devuelve:

TextView.java muestra:

 public CharSequence getText() { return mText; } 

Ahora necesitamos saber si mText podría ser nulo.

Al profundizar más en el origen 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 , ya que tan pronto como se construye un EditText , mText se le da un valor de una cadena vacía.

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

No creo que vuelva jamás null .

Pero si desea comprobar si el texto devuelto está vacío o no, podría sugerir el uso del método TextUtils.isEmpty()

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

Volverá nulo porque cuando las aplicaciones se ejecutan vacías y devuelve null, utilice .getText.toString dentro de un oyente de clic de botón, ahora al hacer clic en botón obtendrá el texto que ha introducido en editText.

Intentar de esta manera

 String edittext = edittext.getText().toString(); if(edittext.length==0){ Log.d("null","the valueis null")}; 
  • Android Material recolorado Subtexto de EditText
  • Android: EditText no se ellipsiza
  • Android Mover el cursor de un EditarTexto a otro si hace clic en cualquier letra en el campo?
  • cómo insertar la imagen en un editText
  • Ajustar ImageSpan a la altura de línea de TextView
  • Cómo agregar EditText en listview y obtener su valor dinámicamente en todas las filas?
  • Sugerencia EditText que no se muestra en 5.0.1
  • Android EditText escucha para el cambio de posición del cursor
  • SetCompoundDrawablesWithIntrinsicBounds (int, int, int, int) no funciona
  • Obtener texto de un EditText
  • Cómo hacer que EditText no se enfoque al crear la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.