Android Studio: Button setEnable nach Validierung durch zwei Textviewer

  • Antworten:4
  • Bentwortet
Col.Biernot
  • Forum-Beiträge: 30

08.10.2015, 09:39:24 via Website

Hallo,

Ich benötige Hilfe bei der Aktivierung eines Buttons. Ich habe 6 EditTexts die mit Hilfe von 2 TextWatchern validiert werden (Einen für Name/Vorname/Straße/Stadt und einen Für Hausnummer und PLZ) So weit funktioniert das auch. Aber jetzt soll mein "Fertig" Button erst klickbar sein wenn ALLE Bedingungen erfüllt sind.
Hierfür habe Ich mir einige Hilfsvariablen "nameValid" usw. angelegt welche anschließend mit einer if Abfrage überprüft werden. Im Anhang stelle Ich mal meinen inputChecker (Validierung der Namen) ein.

So wie es jetzt ist wir meine if Abfrage nicht erfüllt. Falsche Stelle (?)

Mfg
Col.Biernot

TextWatcher inputChecker = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence input, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence input, int start, int before, int count) {
        }

        @Override
        public void afterTextChanged(Editable input) {
            Pattern p = Pattern.compile("^[a-zA-ZäöüÄÖÜß ]{3,}$");
            Matcher m = p.matcher(input);

            /*
             * Vorname
             */
            if (input.hashCode() == vorname.getText().hashCode()) {
                if (m.find()) {
                    vnameValid = true;
                } else {
                    vnameValid = false;
                }
            }
            /*
             * Nachname
             */
            if (input.hashCode() == nachname.getText().hashCode()) {
                if (m.find()) {
                    nnameValid = true;
                } else {
                    nnameValid = false;
                }
            }
            /*
             * Straße
             */
            if (input.hashCode() == strasse.getText().hashCode()) {
                if (m.find()) {
                    strasseValid = true;
                } else {
                    strasseValid = false;
                }
            }
            /*
             * Stadt
             */
            if (input.hashCode() == stadt.getText().hashCode()) {
                if (m.find()) {
                    stadtValid = true;
                } else {
                    stadtValid = false;
                }
            }
        }
    };

    if (vnameValid && nnameValid && strasseValid && stadtValid && nummerValid && plzValid) {
        weiterFertig.setEnabled(true);
    } else {
        weiterFertig.setEnabled(false);
    }

    vorname.addTextChangedListener(inputChecker);
    nachname.addTextChangedListener(inputChecker);
    strasse.addTextChangedListener(inputChecker);
    stadt.addTextChangedListener(inputChecker);

Kann es sein, dass meine [...]Valid Variablen nicht global gespeichert werden?

— geändert am 08.10.2015, 10:08:30

Antworten
Klaus
  • Blogger
  • Forum-Beiträge: 19.172

08.10.2015, 09:43:46 via App

Hallo Col.Biernot!

Herzlich Willkommen hier bei uns im Forum.

Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)

Danke :)

| LG Klaus |
| Google Nexus 6P - Dirty Unicorns | Google Nexus 6 - Dirty Unicorns |
| Das AndroidPITiden-Buch | Die Androiden-Toolbox | AndroidPIT-Regeln |

Antworten
Col.Biernot
  • Forum-Beiträge: 30

08.10.2015, 09:55:44 via Website

Entschuldigung :P

Ich hoffe so ists Recht ;)

Klaus

Antworten
Col.Biernot
  • Forum-Beiträge: 30

08.10.2015, 10:43:16 via Website

Hab eine Lösung gefunden. Einfach die Abfrage in eine neue Funktion setzen und selbige am Ende der Textwatcher aufrufen.

Antworten