2010-05-07 5 views

Antwort

62

Keine andere Möglichkeit.

getText, infact, gibt niemals null zurück. Es gibt CharSequence zurück, deren Inhalt möglicherweise leer ist.

Statt getText().toString().equals("") oder umgekehrt zu tun, kann es schneller sein getText().length() == 0 zu tun

+3

CharSequence ist eine Objektreferenz für eine Klasse, die die Schnittstelle implementiert. Nichts hält den API-Implementierer davon ab, null von getText zurückzugeben, in welchem ​​Fall getText(). Length eine NPE verursacht. –

+1

Nun, CharSequence-Instanz, die von getText zurückgegeben wird, ist nie null. Daher meine Beobachtung. –

+0

das funktioniert nicht für mich. Ich habe ungefähr 20 TextViews in einer Aktivität. In einem ersten Schritt habe ich einige Werte festgelegt und andere davon unberührt gelassen. Wenn ich alle durch iteriere, setze den Text auf '0' wenn 'getText(). Length() == 0', alle außer einem werden mit '0' überschrieben (und es ist garantiert, dass es mehr als eins gibt, seit Ich habe es getestet, ohne mit '0' zu überschreiben. Dasselbe geschieht durch Testen von ... toString(). Equals ("") '. Was könnte das verursachen? –

4

Wenn es leer ist, dies funktionieren wird:

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

Auch wenn es leer ist, getText() wird noch eine bearbeitbare zurückkehren, so dass, wenn Sie dies tun wollten:

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

Es funktionierte bestimmt nicht.

6

Sie können TextUtils.isEmpty (mEditText.getText(). ToString()) verwenden. Es wird true zurückgeben, wenn es leer ist/null.

+1

Wenn es null zurückgibt, dann erhalten Sie eine 'NullPointerException', die das tut, was Sie sagen. Wie auch immer @MasterGaurav erwähnt, scheint der Standard-EditText nie null zurückgeben; –

Verwandte Themen