2010-05-07 16 views

Respuesta

62

No hay otra posibilidad.

getText, de hecho, nunca devolverá nulo. Devuelve CharSequence cuyo contenido puede estar vacío.

En vez de hacer getText().toString().equals("") o viceversa, puede ser más rápido que hacer getText().length() == 0

+3

CharSequence es una referencia de objeto a alguna clase que implementa la interfaz. Nada impide que el implementador de API devuelva null desde getText, en cuyo caso getText(). Length causará un NPE. –

+1

Bueno, la instancia de CharSequence devuelta por getText nunca es nula. De ahí mi observación. –

+0

esto no funciona para mí. Tengo alrededor de 20 TextViews en una actividad. En un primer paso, establezco algunos valores para algunos de ellos, manteniendo intactos otros. Cuando paso por todos ellos, estableciendo su texto en '0' si 'getText(). Length() == 0', todos excepto uno se sobrescriben con '0' (y se garantiza que hay más de uno, ya que Lo he probado sin sobrescribirlo con '0'. Lo mismo al probar '... toString(). Equals (" ")'. Que podria causar esto? –

4

Si está vacío, esto va a funcionar:

if(mEditText.getText().toString().equals("")) { 
    // stuff to run when it's empty 
} 

Incluso si está vacío, getText() todavía devolverá un editable, por lo que si estuviera tratando de hacer esto:

if(mEditText.getText().equals("")) { 
    // stuff 
} 

Se sin duda no estaba funcionando.

6

Puede usar TextUtils.isEmpty (mEditText.getText(). ToString()). Volverá verdadero si está vacío/nulo.

+1

si devuelve nulo, entonces obtendrás 'NullPointerException' haciendo lo que dices. De todos modos, al igual que @MasterGaurav mencionado, parece que el EditText predeterminado nunca devolverá nulo; –