Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98

    [ANDROID] Controllare se un campo è stato inserito

    Anche se la sezione riguarda la programmazione in Java, mi è sembrata quella più opportuna per chiedere supporto per un'applicazione Android.
    Ho fatto un semplice programma che dati due numeri, ne fa la somma.
    Il problema è che non so come impedire che la funzione di calcolo venga chiamata quando i due numeri non sono ancora stati inseriti.
    Ho provato a controllare i campi con un != null, ma ricevo l'errore che un intero non può essere confrontato con null.
    Vi allego la funzione in questione, spero che qualcuno sappia aiutarmi
    codice:
    public void onButtonClick(View v)    
    {
            int n1, n2, thesum;
            EditText e1 = (EditText)findViewById(R.id.num1);
            EditText e2 = (EditText)findViewById(R.id.num2);
            TextView t1 = (TextView)findViewById(R.id.sum);
            n1 = Integer.parseInt(e1.getText().toString());
            n2 = Integer.parseInt(e2.getText().toString());
            if(n1 != null && n2 != null)
            {
                thesum = n1 + n2;
                t1.setText(Integer.toString(thesum));
            }
        }

  2. #2
    tu devi controllare se le EditText non siano vuote, non fare il controllo sul numero da quanto si capisce.
    quindi potresti fare una cosa del genere:
    codice:
    if(e1.getText().toString().trim().length() > 0 && e2.getText().toString().trim().length() > 0) {
       // DO STUFF
    } else {
       // ERRORE
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Quote Originariamente inviata da fermat Visualizza il messaggio
    tu devi controllare se le EditText non siano vuote, non fare il controllo sul numero da quanto si capisce.
    quindi potresti fare una cosa del genere:
    codice:
    if(e1.getText().toString().trim().length() > 0 && e2.getText().toString().trim().length() > 0) {
       // DO STUFF
    } else {
       // ERRORE
    }
    Ho provato a strutturare la funzione col codice che mi hai dato tu, ma quando clicco sul pulsante che chiama la funzione per fare la somma, se i due numeri non sono stati inseriti, continua a dare errore, anche se non dovrebbe accadere, dato che non va a scrivere nella TextView
    codice:
    public void onButtonClick(View v){
            int n1, n2, thesum;
            EditText e1 = (EditText)findViewById(R.id.num1);
            EditText e2 = (EditText)findViewById(R.id.num2);
            TextView t1 = (TextView)findViewById(R.id.sum);
            n1 = Integer.parseInt(e1.getText().toString());
            n2 = Integer.parseInt(e2.getText().toString());
            if(e1.getText().toString().trim().length() > 0 && e2.getText().toString().trim().length() > 0)
            {
                thesum = n1 + n2;
                t1.setText(Integer.toString(thesum));
            }
    }
    Qualcuno sa il perché?

  4. #4
    scusa ma che errore da di preciso??

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Il programma è stato arrestato

  6. #6
    Quote Originariamente inviata da Tiime Visualizza il messaggio
    Il programma è stato arrestato
    allora il problema non è la.

    prova con un tentativo stupido cambiando questa riga:
    codice:
    t1.setText(Integer.toString(thesum));
    così:
    codice:
    t1.setText(thesun.toString());
    e cmq controlla l'errore nel log.
    android crea una marea di log.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    22
    Il fatto di controllare se l'editText è vuoto e non l'intero poi generato è giusto, ma evita di vedere se la stringa è lunga zero o di più... Per controllare se è stato inserito prova ad usare il metodo equals di String

    codice:
        e1.getText().toString().equals("")
    Se è stringa vuota ti blocchi altrimenti vai avanti, magari chiudi tutto in un for e metti un Toast per far vedere che ti sei bloccato

  8. #8
    Quote Originariamente inviata da lords91 Visualizza il messaggio
    Il fatto di controllare se l'editText è vuoto e non l'intero poi generato è giusto, ma evita di vedere se la stringa è lunga zero o di più... Per controllare se è stato inserito prova ad usare il metodo equals di String

    codice:
        e1.getText().toString().equals("")
    Se è stringa vuota ti blocchi altrimenti vai avanti, magari chiudi tutto in un for e metti un Toast per far vedere che ti sei bloccato
    questo va bene se non vuole controllare eventuali campi con solo uno spazio.
    se l'utente mette uno spazio, il programma va avanti.
    ecco perchè gli avevo detto di controllare la lunghezza del campo.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    22
    E' giusto, hai ragione ! O controlla con StringTokenizer usando come separatore uno spazio oppure con la lunghezza del campo ma se non funziona non so ... Che posti i log perchè così è impossibile

    ps: anche se i casi più importanti da controllare sono stringa vuota e stringa formata da uno spazio " "
    Non ricordo ma ad occhio il parseInt di una stringa del tipo "13 " ritorna 13 se si mette 10 come radice.
    Quindi magari si può fare un if con quella condizione seguita in OR dalla condizione della stringa formata da uno spazio...

    Se poi l'utente inserisce una lettera si chiude il tutto in un try catch e quando solleva NumberFormatException fa stampare un messaggio
    Ultima modifica di lords91; 07-04-2015 a 09:36

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.