CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 14 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 35 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 11
Discussione:

problema con EditTExt

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    May 2011
    Messaggi
    126

    Ringraziamenti
    8
    Ringraziato 10 volte in 10 Posts
    Predefinito

    problema con EditTExt

    ciao ragazzi lo ammetto mi sto improvvisando "programmatore" che è già un parolone XD agiungo subito al punto ho impostato nel fail main.xml un EditText
    <EditText
    android:id="@+id/Lc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0.89"
    android:inputType="number"
    android:hint="Inserire C"
    >
    ok questo in teoria dovrebbe prendere dei numeri e quando l' utente clicca su un bottone dovrebbe dare dei risultati elaborando questo numero con altri numeri.... il problema sorge qui... non riesco a prelevare questo numero dalll' EditTExt ci ho provato in tutti i modi e ci sono anche riuscito (facendolo visualizzare su una TextView) però quando provo a fare dei calcoli mi dice che è un EditText e che quindi non ci posso fare somme perchè non è un' int.... qualcuno gentilmente mi può delucidare???? grazie ^_^ qualunque domanda o chiarimento sono qui per rispondervi grazie ^_^

  2.  
  3. #2
    Androidiano


    Registrato dal
    Nov 2011
    Località
    Ivrea
    Messaggi
    133

    Ringraziamenti
    7
    Ringraziato 8 volte in 8 Posts
    Predefinito

    Se vuoi puoi provare a postare il resto del codice..

  4. #3
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Quello che ottieni da una EditText è sempre una stringa, anche se l'inputType è di tipo numerico. Per poter effettuare dei calcoli devi trasformare la stringa in int, ad esempio utilizzando il metodo statico parseInt() della classe Integer:

    codice:
    try {
     int pippo = Integer.parseInt(tuaEditText.getText().toString());
    } catch (NumberFormatException nfe) {
     //Gestisci l'eccezione in caso il testo non sia un numero
    }

  5. Il seguente Utente ha ringraziato maurilios per il post:

    marco110 (14-02-12)

  6. #4
    Androidiano


    Registrato dal
    May 2011
    Messaggi
    126

    Ringraziamenti
    8
    Ringraziato 10 volte in 10 Posts
    Predefinito

    grazie era propio quello che stavo cercando... parlando con mio padre mi ha detto dell' esistenza di un comando per trasformare da string a int ma non lo trovavo ho provato con char ma non andava grazie ancora ^_^

  7. #5
    Androidiano


    Registrato dal
    May 2011
    Messaggi
    126

    Ringraziamenti
    8
    Ringraziato 10 volte in 10 Posts
    Predefinito

    ok lo sto provando ma quando inserisco un numero nell'EditText mi restituisce null uhm sto sicuramente sbagliando qualcosa ma sono ancora un noob chi mi può delucidare??? io ho provato ad inserirla così nel file java....
    try {
    int b = Integer.parseInt(getText(R.id.lB).toString());
    } catch (NumberFormatException nfe) {
    //Gestisci l'eccezione in caso il testo non sia un numero
    }
    ris.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
    // TODO Auto-generated method stu
    display.setText("" + b);
    sicuramente sto sbagliando ma non capisco dove (ripeto che sto iniziando in questi giorni a programmare in java e android mi sono letto 2 libri, uno su java ed uno su android ma finchè non inizi a scrivere è tutto niente XD) grazie a tutti ^_^
    e modificando e provando il codice spesso e volentieri mi esce questo numero 2131099653 uhm forse è un codice identificativo di EditText....
    Ultima modifica di marco110; 14-02-12 alle 12:08

  8. #6
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Innanzitutto devi puntare all'oggetto EditText nel tuo layout; nell'esempio che hai fatto all'inizio hai chiamato tua EditText "Lc" ed è a quella che devi fare riferimento. In secondo luogo, se definisci la variabile b nel blocco try-catch, devi fare tutto nel blocco stesso, altrimenti la variabile stessa non sarà visibile all'esterno:

    codice:
    //Otteniamo un riferimento alla EditText 
    EditText tuaEditText = (EditText) findViewById(R.id.Lc);
    
    //Estraiamo il contenuto della EditText in forma di stringa
    String contenutoEditText = tuaEditText.getText().toString();
    
    //Definiamo la variabile b e la inizializziamo a zero
    int b = 0;
    
    //Convertiamo la stringa in intero
    try {
      int b = Integer.parseInt(contenutoEditText );
    } catch (NumberFormatException nfe) {
      //Gestisci l'eccezione in caso il testo non sia un numero
    }
    
    //Da qui in poi puoi utilizzare b sul tuo onClickListener...
    Fai attenzione perchè la variabile b non può essere richiamata dall'interno dell'oggetto View.OnClickListener come hai fatto tu. I casi sono tre:
    1. definisci la variabile come public static nella tua activity;
    2. crei un metodo public int getB() {} nella tua activity che restituisca il valore della variabile b ed accedi al metodo dall'onClick dell'OnClickListener con un nomeActivity.this.getB();
    3. crei una nuova classe che implementi View.OnClickListener e gli passi la variabile b nel costruttore.
    Ultima modifica di maurilios; 14-02-12 alle 12:32

  9. Il seguente Utente ha ringraziato maurilios per il post:

    marco110 (14-02-12)

  10. #7
    Androidiano


    Registrato dal
    May 2011
    Messaggi
    126

    Ringraziamenti
    8
    Ringraziato 10 volte in 10 Posts
    Predefinito

    scusate la poca chiarezza riposto tutto il codice da zero l' ho appena rifatto
    public class puntoIniziale extends Activity {
    /** Called when the activity is first created. */
    int calcolo;
    TextView display;
    Button ris;
    EditText itA;
    EditText lB;
    EditText Lc;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    calcolo = 0;
    ris = (Button) findViewById (R.id.bRis);
    display = (TextView) findViewById (R.id.tvDisplay);
    final EditText itA = (EditText) findViewById (R.id.itA);
    final EditText lB = (EditText) findViewById (R.id.lB);
    final EditText Lc = (EditText) findViewById (R.id.Lc);


    ris.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
    // TODO Auto-generated method stu
    Editable text = itA.getText();
    Editable textb = lB.getText();
    Editable textc = Lc.getText();
    calcolo = text + textb + textc;
    display.setText("" + calcolo);

    }
    });

    }
    }
    adesso mi da errore su calcolo = text + textb + text c; lo stesso errore che mi dava prima cioè lui vede text, textb e textc come stringhe e non come int sto provando in vari modi ad inserire i codici da te dati ma con scarsi risultati ma non demordo continuerò fino alla morte XD grazie per l' attenzione ^_^

  11. #8
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Hai dimenticato le conversioni da sting a int. Così come è adesso tenta di fare una somma tra Editable e non tra int. Inoltre se definisci itA, lB e Lc solo "final" significa che puoi assegnare loro un valore solo una volta ma non vuol dire che siano accessibili al di fuori della classe; per dare questa visibilità devi aggiungere static davanti a final.
    Ci sarebbero altre cose da dire sul codice, ma capisco che sei agli inizi e ci vuole un po' di tempo per apprendere; diciamo che per far funzionare un'app di test potrebbe andar bene così.

  12. #9
    Androidiano


    Registrato dal
    May 2011
    Messaggi
    126

    Ringraziamenti
    8
    Ringraziato 10 volte in 10 Posts
    Predefinito

    il codice che ho scritto era solo per far chiarezza e questa è la mia prima app è la prima volta che mi siedo a scrivere e provare di sana pianta.... credo che si possa apprendere in fondo solo provando i vari codici dato che 2 libri non mi hanno insegnato quasi niente ma mi hanno messo almeno chiarezza.... sto anche cercando di consultarli ma non ci sono fino in fondo le cose che sto cercando.... bah... ora provo a postare il codice completo del testo che mi hai dato te con una parte della mia comprenzione(ci ho messo del mio XD)....
    p.s. come provo ad aggiungere static davanti a final mi da un errore su itA,lb,Lc. inoltre eclipse mi ha sugerito in automatico di farle diventare final credo per poterle leggere al difuori della classe propio come dici te....



    Uploaded with ImageShack.us
    Ultima modifica di marco110; 14-02-12 alle 16:22

  13. #10
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Allora partiamo da una spiegazione degli errori:

    - Il primo errore è dovuto al fatto che stai cercando di convertire una EditText in un int; il metodo che ti avevo indicato serve per convertire una stringa in int, quindi prima devi ottenere una stringa.
    - Gli altri errori sono dovuti al fatto che le variabili itA, lB e Lc non sono public e quindi non sono accessibili da oggetti al di fuori dell'Activity.

    In aggiunta nel metodo onCreate hai ridefinito itA, lB e Lc e definito tre variabili text1, text2 e text3 che poi non utilizzi da nessuna parte.

    Non ho ben capito cosa vuoi ottenere (la somma del contenuto delle tre TextView?), comunque potresti provare così:

    codice:
    public class PuntoIniziale extends Activity {
    
    	private TextView display;
    	private Button ris;
    	private EditText itA;
    	private EditText lB;
    	private EditText Lc;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    
    		setContentView(R.layout.main);
    		ris = (Button) findViewById(R.id.bRis);
    		display = (TextView) findViewById(R.id.tvDisplay);
    		itA = (EditText) findViewById(R.id.itA);
    		lB = (EditText) findViewById(R.id.lB);
    		Lc = (EditText) findViewById(R.id.Lc);
    
    		ris.setOnClickListener(new View.OnClickListener() {
    
    			public void onClick(View arg0) {
    				String text1 = PuntoIniziale.this.getItA().getText().toString();
    				String text2 = PuntoIniziale.this.getLB().getText().toString();
    				String text3 = PuntoIniziale.this.getLc().getText().toString();
    
    				try {
    					int a = Integer.parseInt(text1);
    					int b = Integer.parseInt(text2);
    					int c = Integer.parseInt(text3);
    					int calcolo = a + b + c;
    					PuntoIniziale.this.getDisplay().setText(calcolo);
    				} catch (NumberFormatException nfe) {
    					PuntoIniziale.this.getDisplay().setText("Uno o più parametri non sono numeri");
    				}
    
    			}
    		});
    
    	}
    
    	public EditText getItA() {
    		return itA;
    	}
    
    	public EditText getLB() {
    		return lB;
    	}
    
    	public EditText getLc() {
    		return Lc;
    	}
    
    	public TextView getDisplay() {
    		return display;
    	}
    
    }

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy