Pusty EditText Android Studio

Pusty EditText Android Studio
B2
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:40
0

Witam, problem mam taki jak w temacie. Od około miesiąca tworzę swoją pierwszą aplikację w Android Studio. Moja znajomość javy jest podstawowa i na razie się jeszcze uczę. Rozwiązania problemu nie znalazłem na żadnym polski, ani zagranicznym forum, ale może źle szukałem. Otóż, moja aplikacja głównie liczy. Na przykład jest funkcja obliczająca sumę ciągu. Problem jest taki, że jeśli użytkownik nie wpisze liczby w polu Edit Text, to się crashuje.
Wszystkie odpowiedzi jakie znalazłem, tyczyły się tylko EditText, które za zmienne przyjmowały typ String.
Ja natomiast mam tym double i żaden ze sposobów nie działa. Próbowałem z:

`if(zmienna.length()==0)
{ zmienna.setError("coś");}

if(zmienna.getText().toString()=="")
{zmienna.setError("coś");}

if(zmienna.getText().toString().equals("")
{zmienna.setError("coś");}`

Funkcja isEmpty nie działa dla float/double. Jak mogę sobie z tym poradzić?

edytowany 1x, ostatnio: Bartek2205
Michał Sikora
Michał Sikora
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Kraków
  • Postów:834
0

Można się bawić w sprawdzanie czy to, co wpisał użytkownik jest liczbą albo ustawić filtry na EditText, ale jest to raczej niepraktyczne w tym przypadku. Lepiej ustaw po prostu w layoucie inputType=numberDecimal. W ten sposób klawiatura podczas wpisywanie do tego konkretnego pola, będzie pozwalać na wprowadzanie tylko liczb zmiennoprzecinkowych.

Kopiuj
<EditText
    android:id="@+id/my_edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"  />

EDIT:

Ups... źle zrozumiałem problem chyba. Tak jak ktoś napisał TextUtils.isEmpty().

edytowany 2x, ostatnio: Michał Sikora
0

TextUtils.isEmpty(editTextView.getText())

B2
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:40
0
Michał Sikora napisał(a):

Można się bawić w sprawdzanie czy to, co wpisał użytkownik jest liczbą albo ustawić filtry na EditText, ale jest to raczej niepraktyczne w tym przypadku. Lepiej ustaw po prostu w layoucie inputType=numberDecimal. W ten sposób klawiatura podczas wpisywanie do tego konkretnego pola, będzie pozwalać na wprowadzanie tylko liczb zmiennoprzecinkowych.

Kopiuj
<EditText
    android:id="@+id/my_edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"  />

Tak, tę funkcję znam. Chodzi mi bardziej o to, kiedy użytkownik nic nie poda

B2
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:40
0
Ponton napisał(a):

TextUtils.isEmpty(editTextView.getText())

Niestety nie działa :/

Michał Sikora
Michał Sikora
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Kraków
  • Postów:834
0

Pokaż większy fragment kodu, bo bez tego to tak średnio. Możesz sprawdzić ewentualnie jeszcze TextUtils.isEmpty(editTextView.getText().toString().trim()) jak coś.

B2
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:40
0

Na to już wpadłem, jednak ciągle crashuje z komunikatem "Unfortunately aplication has stopped".
Rozumiem, że editTextView to nazwa mojej zmiennej?

edytowany 1x, ostatnio: Bartek2205
Michał Sikora
Michał Sikora
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Kraków
  • Postów:834
0

editTextView to nazwa zmiennej, do której jest przypisany EditText, który chcesz sprawdzić. Więc prawdopodbnie tak.

Skopiuj i wklej większy kawałek kodu oraz treść crasha.

B2
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:40
0

`
an1 = Float.parseFloat(an.getText().toString());
ak1 = Float.parseFloat(ak.getText().toString());
n1 = Float.parseFloat(n.getText().toString());
k1 = Float.parseFloat(k.getText().toString());

            if(TextUtils.isEmpty(n.getText().toString().trim()))
                n.setError("n cannot be empty"); `

"Unfortunately aplication has stopped" to cały komunikat w emulatorze.

edytowany 4x, ostatnio: Bartek2205
Michał Sikora
Michał Sikora
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Kraków
  • Postów:834
1

Trochę ciężko się to czyta, ale kolejność operacji jest zła. Przypisanie do swoich zmiennych musisz zrobić dopiero PO warunku. Czyli.

Kopiuj
if(TextUtils.isEmpty(n.getText().toString().trim())) {
  n.setError("n cannot be empty");
  return; // Tutaj ciężko zgadywać jak należy wrócić, bo nie ma wklejonej całej metody.
}
an1 = Float.parseFloat(an.getText().toString());
ak1 = Float.parseFloat(ak.getText().toString());
n1 = Float.parseFloat(n.getText().toString());
k1 = Float.parseFloat(k.getText().toString());

Poza tym widzę, że w warunku sprawdzasz treść tekstu w zmiennej n, a potem używasz czegoś takiego jak an do oczytania tekstu. Czyli prawdopodbnie dwa zupełnie inne obiekty.

Nie chodzi o komunikat jaki pojawia się na telefonie tylko co wypluwa Ci logcat i jak wygląda stack trace. Jeżeli nie wiesz o czym mówię, to musisz doczytać.

edytowany 1x, ostatnio: Michał Sikora
B2
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:40
0
Michał Sikora napisał(a):

Trochę ciężko się to czyta, ale kolejność operacji jest zła. Przypisanie do swoich zmiennych musisz zrobić dopiero PO warunku. Czyli.

Kopiuj
if(TextUtils.isEmpty(n.getText().toString().trim())) {
  n.setError("n cannot be empty");
  return; // Tutaj ciężko zgadywać jak należy wrócić, bo nie ma wklejonej całej metody.
}
an1 = Float.parseFloat(an.getText().toString());
ak1 = Float.parseFloat(ak.getText().toString());
n1 = Float.parseFloat(n.getText().toString());
k1 = Float.parseFloat(k.getText().toString());

Poza tym widzę, że w warunku sprawdzasz treść tekstu w zmiennej n, a potem używasz czegoś takiego jak an do oczytania tekstu. Czyli prawdopodbnie dwa zupełnie inne obiekty.

Nie chodzi o komunikat jaki pojawia się na telefonie tylko co wypluwa Ci logcat i jak wygląda stack trace. Jeżeli nie wiesz o czym mówię, to musisz doczytać.

Działa! Wielkie dzięki ;). Byłem przekonany o prawidłowej kolejności, ale na szczęście są mądrzejsi ;).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.