2010-05-07 28 views

Odpowiedz

62

Nie ma innej możliwości.

getText, w rzeczywistości, nigdy nie zwróci wartości null. Zwraca CharSequence, której zawartość może być pusta.

Zamiast robić getText().toString().equals("") lub odwrotnie, może być szybciej robić getText().length() == 0

+3

CharSequence jest odwołaniem do obiektu do klasy implementującej interfejs. Nic nie powstrzymuje implementatora API przed zwróceniem wartości null z getText, w którym to przypadku getText(). Length spowoduje NPE. –

+1

Cóż, instancja CharSequence zwracana przez getText nigdy nie jest pusta. Stąd moja obserwacja. –

+0

to nie działa dla mnie. Mam około 20 widoków tekstu w działaniu. Na pierwszym etapie ustawiam niektóre wartości, pozostawiając inne nietknięte. Gdy przejdę przez wszystkie z nich, ustawiając tekst na "0", jeśli 'getText(). Length() == 0', wszystkie z wyjątkiem jednego zostaną nadpisane przez '0' (i gwarantuje się, że jest więcej niż jeden, ponieważ Przetestowałem to bez nadpisywania z "0"). To samo, testując '... toString(). Equals (" ")'. Co może spowodować to? –

4

Jeśli jest pusty, to będzie działać:

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

Nawet jeśli jest pusta, getText() będzie jeszcze powrócić edytowalną, więc jeśli starali się to zrobić:

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

It z całą pewnością nie działa.

6

Możesz użyć TextUtils.isEmpty (mEditText.getText(). ToString()). Zwróci true, jeśli jest pusty/zerowy.

+1

jeśli zwróci wartość null, otrzymasz "NullPointerException", wykonując to, co mówisz. Tak czy inaczej, tak jak wspomniano o @MasterGaurav, domyślny EditText nigdy nie zwróci null; –