¿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?
- ¿Cómo detectar el golpe a la izquierda oa la derecha en Android?
- Problema con el campo de contraseña de Android, no ocultando el último carácter escrito
- EditText ir automáticamente a una nueva línea
- Cursor personalizado EditText dibujado incorrectamente en la primera fila
- Cómo borrar un EditText al hacer clic?
- Android: validar contraseña, conformar contraseña y pasar un valor de cadena a través de botón
- Sugerencias de EditText y MultiAutoCompleteTextView
- EditText añadido no es un TextInputEditText. Por favor, cambie a usar esa clase en su lugar
- La Barra de estado aparece cuando aparece el teclado virtual pero no se oculta cuando el teclado virtual desaparece mientras está en Modo Immersivo
- Desplazamiento mediante programación de un EditText
- Cómo hacer un EditText no editable / deshabilitado
- ¿Cómo puedo saber cuando un edittext perder el foco
- ScrollView salta a EditText
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