Autore Topic: Controllo inserimento numero EditText-PARTICOLARE  (Letto 910 volte)

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Controllo inserimento numero EditText-PARTICOLARE
« il: 27 Ottobre 2013, 11:42:03 CET »
0
Rieccomi,questa volta non mi risponderò da solo,proprio non so come risolvere.

Come da titolo,dovrei controllare se le mie edittext (25 in tutto) contengono un numero qualsiasi,se NO allora inserisco in automatico il numero 0.

Solitamente avrei inserito un ciclo IF (dove verifico la lunghezza di quanto inserito nella edittext) o un ciclo try....catch (dove, tramite NumberFormatException, controllo se la stringa inserita puo essere convertita in numero...).

questi cicli però li ho sempre usati per edit text "concatenate" tra di loro...nel senso che devono NECESSARIAMENTE essere riempite TUTTE,senno chiedo all' utente di farlo.


esempio pratico del mio problema..


Codice (Java): [Seleziona]
 String P_cri1= P_cri.getText().toString();
                    final int P_cri2=Integer.parseInt(P_cri1.trim());

con questo codice,leggo la EDITtext e la converto in intero.

con questo codice

Codice (Java): [Seleziona]
 if(P.cri.length() == 0){ int P_cri2=0;} else{String P_cri1= P_cri.getText().toString();
                    final int P_cri2=Integer.parseInt(P_cri1.trim());}
pensavo di risolvere il problema,ripetendo il ciclo if...else per 25 volte e, fuori da tutti i cicli (restando dentro al bottone,che se premuto mi inizia ad assegnare le edit a integer) facendogli poi fare le somme di TUTTE le edit text (con valore o con valore assegnato a 0).

Mi trovo però in difficoltà perchè,ovvio, la variabile P_cri2 FUORI dai vari cicli if...else non viene riconosciuta!! Il prg mi chiede di riassegnare il valore alla variabile P_cri2.

Posso tranquillamente risolvere,inserendo il numero 0 in tutte le edit text e controllare se qualche utente è stato cosi furbo da cancellare lo 0 senza inserire niente e tramite toast chiedergli di inserire almeno un valore 0 (come impostato di default)...ma la cosa è poco carina (VORREI AVERE LE EDIT SENZA SCRITTO DENTRO NIENTE!!!!).


come posso controllare il contenuto di piu edittext e assegnare 0 SOLO alle edittext vuote e fare poi la somma di tutte le edit text senza inserire io (manualmente) il valore "0" nelle edit??


Spero di essere stato il piu chiaro possibile... =)
« Ultima modifica: 27 Ottobre 2013, 11:43:35 CET da antoni88 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Controllo inserimento numero EditText-PARTICOLARE
« Risposta #1 il: 27 Ottobre 2013, 12:05:55 CET »
+1
Scrivo direttamente nel forum, per cui è tutta da provare: passa la stringa di ogni EditText a questa funzione, che (nelle mie intenzioni) dovrebbe restituire o il numero convertito o zero.

Codice (Java): [Seleziona]
public int getNumOrZero(String str)  
{  
  int nn = 0;
  try  
  {  
    nn = Integer.parseInt(str);  
  }  
  catch(NumberFormatException nfe)  
  {  
    return 0;  
  }  
  return nn;  
}
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Re:Controllo inserimento numero EditText-PARTICOLARE
« Risposta #2 il: 27 Ottobre 2013, 16:52:53 CET »
0
Sfortunatamente non funziona.

qui il Logcat

10-27 15:49:31.802: E/AndroidRuntime(1331): FATAL EXCEPTION: main
10-27 15:49:31.802: E/AndroidRuntime(1331): java.lang.NumberFormatException:
10-27 15:49:31.802: E/AndroidRuntime(1331):    at java.lang.Long.parseLong(Long.java:347)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at java.lang.Long.parseLong(Long.java:320)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at yoaur.packasge.namespace.Terza_activity$1.onClick(Terza_activity.java:46)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at android.view.View.performClick(View.java:2408)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at android.view.View$PerformClick.run(View.java:8816)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at android.os.Handler.handleCallback(Handler.java:587)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at android.os.Looper.loop(Looper.java:123)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at android.app.ActivityThread.main(ActivityThread.java:4627)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at java.lang.reflect.Method.invokeNative(Native Method)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at java.lang.reflect.Method.invoke(Method.java:521)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-27 15:49:31.802: E/AndroidRuntime(1331):    at dalvik.system.NativeStart.main(Native Method)


se inserisco un numero (valido) allora me lo passa...se NON inserisco niente,mi crasha.  :-(  (ps,ho modifica un po il metodo...mi serve un numero long e ho inserito long invece che int!)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Controllo inserimento numero EditText-PARTICOLARE
« Risposta #3 il: 27 Ottobre 2013, 16:55:13 CET »
+1
Formatta il LogCat con l'opportuno marcatore e posta il codice, evidenziando le righe citate da LogCat stesso.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline antoni88

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: +1
    • Mostra profilo
Re:Controllo inserimento numero EditText-PARTICOLARE
« Risposta #4 il: 27 Ottobre 2013, 17:02:37 CET »
0
errore mio.

Funziona!  :-)

(inserivo il richiamo al metodo in un punto sbagliato del programma...le edit text sono un sacco e lo inserivo DOPO l' assegnazione a string e int di una edittext e mi mandava in crash tutto).

Ti do un +1.

(ps: scusa ancora.sei un mito,grazie!!)