¿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?
- El teclado flexible de Android no se mostrará en 2.2 / 2.3, pero sí en 3.0+
- Entrada de dinero de Android con decimal fijo
- ¿Deshabilitar el teclado virtual de EditText pero todavía permite copiar / pegar?
- Las fuentes de Edittext no aparecen
- AlertDialog con EditText, abre el teclado virtual automáticamente con el enfoque en EditText no funciona
- ¿Cómo utilizo AsYouTypeFormatter TextWatcher en la aplicación de Android?
- MultiautoCompleteTextView ime keyabord no muestra sugerencias
- Cómo hacer que Android EditText se expanda verticalmente cuando está lleno
- Volver evento clave en EditText
- Editar el foco de texto en android
- Make editText perder el foco en la parte posterior de la prensa
- ¿Cómo eliminar la última letra de EditText con el botón?
- Establecer imagen en el lado izquierdo de EditText en Android
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")};
- ¿Cómo funciona el repositorio de manifiesto de repo de Android?
- Prácticas recomendadas de Android SharedPreferences