Wysyłanie do pustego pola EditText

0

Witam, w mojej aplikacji zabezpieczyłem się, że w razie, gdy użytkownik w polu EditText nie wpisze nic, wysyłana jest tam cyfra "0" (aplikacja typu obliczenia równania sześciennego). Problem w tym, że jeśli nic nie wpiszę w żadnym z kilku pól i kliknę przycisk obliczający, wysyłane jest "0" tylko do jednego pola EditText, a pozostałe zostają puste i oprócz tego, aplikacja nie wykonuje obliczeń.
Oto warunek if jaki stosuję:

if(TextUtils.isEmpty(a.getText().toString().trim()))
                {
                    a.setText("0");
                    return;
                }

else if(TextUtils.isEmpty(n.getText().toString().trim()))
                {
                    n.setText("0");
                    return;
                }

1

Usuń z kodu return, bo to powoduje że kończy się Twoja metoda i napisze kolejne ify po sobie bez else, aby sprawdzić każde pole oddzielnie czy nie jest puste.

if(TextUtils.isEmpty(a.getText().toString().trim()))
                {
                    a.setText("0");
                }

if(TextUtils.isEmpty(n.getText().toString().trim()))
                {
                    n.setText("0");
                }
1

Wklejaj większe kawałki kodu, bo tak można się tylko domyślać co się dzieje. W każdym razie zakładam, że swoje obliczenia wykonujesz po tej całej drabice if else. W takim wypadku te obliczenia nie mają prawa się wykonać za pierwszym razem. Kolejność będzie taka (zakładam, że cała sekwencja jest wywoływana przyciskiem).

  1. Kliknięcie.
  2. Sprawdzam czy EditText a jest pusty.
  3. Jest pusty, więc wstawiam do a tekst "0".
  4. Wychodzę z funkcji.
  5. Kliknięcie.
  6. Sprawdzam czy EditText a jest pusty.
  7. Nie jest pusty. Przechodzę dalej.
  8. Sprawdzam czy EditText n jest pusty.
  9. Jest pusty, więc wstawiam do n tekst "0".
  10. Wychodzę z funkcji.

I tak w kółko aż wszystkie pola tekstowe nie zostaną uzupełnione i dopiero wtedy przejdziesz do obliczeń.

0
Vens napisał(a):

Usuń z kodu return, bo to powoduje że kończy się Twoja metoda i napisze kolejne ify po sobie bez else, aby sprawdzić każde pole oddzielnie czy nie jest puste.

if(TextUtils.isEmpty(a.getText().toString().trim()))
                {
                    a.setText("0");
                }

if(TextUtils.isEmpty(n.getText().toString().trim()))
                {
                    n.setText("0");
                }

Jednak działa, nie usunąłem jednego return ;], dzięki!

0
Michał Sikora napisał(a):

Wklejaj większe kawałki kodu, bo tak można się tylko domyślać co się dzieje. W każdym razie zakładam, że swoje obliczenia wykonujesz po tej całej drabice if else. W takim wypadku te obliczenia nie mają prawa się wykonać za pierwszym razem. Kolejność będzie taka (zakładam, że cała sekwencja jest wywoływana przyciskiem).

  1. Kliknięcie.
  2. Sprawdzam czy EditText a jest pusty.
  3. Jest pusty, więc wstawiam do a tekst "0".
  4. Wychodzę z funkcji.
  5. Kliknięcie.
  6. Sprawdzam czy EditText a jest pusty.
  7. Nie jest pusty. Przechodzę dalej.
  8. Sprawdzam czy EditText n jest pusty.
  9. Jest pusty, więc wstawiam do n tekst "0".
  10. Wychodzę z funkcji.

I tak w kółko aż wszystkie pola tekstowe nie zostaną uzupełnione i dopiero wtedy przejdziesz do obliczeń.

W tej chwili funkcja, której fragment przedstawiłem, wygląda tak:

 oblicz.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){

                if(TextUtils.isEmpty(a.getText().toString().trim()))
                {
                    a.setText("0");
                }

                if(TextUtils.isEmpty(n.getText().toString().trim()))
                {
                    n.setText("0");

                }

                else{

                num1 = Float.parseFloat(a.getText().toString());
                num2 = Float.parseFloat(n.getText().toString());
                wyn_num = (float)Math.pow(num1, num2);
                wynik.setText(String.format("%.3f", wyn_num));}
            }
        });
1

Dalej masz else, które powoduje że jeśli te drugie pole jest puste wypełni je "0" ale już nie wykona obliczeń.

0
Vens napisał(a):

Dalej masz else, które powoduje że jeśli te drugie pole jest puste wypełni je "0" ale już nie wykona obliczeń.

Rzeczywiście, bez else już działa tak, jak chcę :). Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1