W mojej aplikacji na Androida nie mogę używać funkcji String.isEmpty (), która znajduje się w JDK 1.6. Android 2.1 lib nie ma tej funkcji w klasie java.lang.String
Próbowałem wprowadzić bibliotekę JRE System do mojego projektu, ponieważ ma taką funkcję, ale nie było efektów.
Jak mogę rozwiązać ten problem i pozwolić mojej aplikacji na korzystanie z tej funkcji?
Odpowiedzi:
Nie możesz.
Użyj
String.length() == 0
zamiast tego. Jest kompatybilny wstecz aż do JDK 1.0 ... a także z J2ME.String.equals("")
to kolejna alternatywa.Nie, jeśli chcesz, aby Twoja aplikacja działała na prawdziwym urządzeniu z Androidem. Platformy Java / Android celowo utrudniają majstrowanie przy zachowaniu podstawowych bibliotek klas. Na początek można to zrobić tylko przez zmodyfikowanie odpowiednika ścieżki bootclasspath lub
rt.jar
pliku Davlika , a żadnego z nich nie można zrobić w działającej JVM.Tego rodzaju majsterkowania ma ryzyka potencjalnie zerwania Java dla innych aplikacji. Nawet zakładając, że nie można bezpośrednio naruszyć separacji aplikacji na Androida (ze względu na separację proces / uid wspomnianą poniżej), złośliwe poprawki do (współdzielonych) podstawowych klas Java mogą nadal potencjalnie pozwolić jednej aplikacji na zakłócanie lub kradzież informacji z innej aplikacji .
źródło
String
, nie ma to wpływu na inne aplikacje.Zamiast tego możesz użyć android.text.TextUtils.isEmpty () . Ta metoda sprawdza również, czy String ma wartość null i jest dostępny od poziomu interfejsu API 1.
if (TextUtils.isEmpty(str)) { Log.d(TAG, "String is empty or null!"); }
źródło
ta metoda pojawiła się w API9, więc nie możesz jej używać przed Android2.3
źródło
Możesz tego użyć
TextUtils.isEmpty(str)
. Jest to dostępne od poziomu API 1 lub możesz utworzyć własną metodę, jak poniżejpublic boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false; }
źródło
return (str == null || str.length() == 0);
, prawda?o ile wiem, Android obsługuje java 5, więc nie ma
isEmpty();
możliwości użycialength()
do symulacjiisEmpty()
źródło
„” .equals (yourString); również daje takie samo zachowanie jak String.isEmpty ();
źródło
null
ustalenie , skąd pochodzi nieoczekiwane, i naprawienie tego problemu ."".equals(yourString)
Podejście jest jedynym dobrym rozwiązaniem, jeślinull
wartośćyourString
ma sens ... a oczekiwano.Musisz zaktualizować Android API do poziomu 9 lub użyć
String.trim().length()==0
lubString.equals("")
zamiast tego, powinno działać na poziomie Android API i wersji JDK.źródło
" "
nie jest pusty! Dlaczego sugerujesz przycinanie sznurka?" ".trim()
będzie pusty !!! Czy w ogóle o tym wiesz? Nie oceniaj w dół, jeśli NIE rozumiesz mojego opisu !!!String.trim().length()==0
iString.equals("")
zwróć inne wyniki, gdyString = " "
. Drugi fragment jest poprawny