Convertitore Lire-euro

di il
7 risposte

Convertitore Lire-euro

Salve a tutti,è da pochissimo che sto scrivendo programmi android con l'utilizzo di eclisse.
Vorrei realizzare un convertitore in cui andare ad inserire un valore in lire e premendo un bottone mi vada a dare il risultato convertito in euro in un'altro EditText.
Vorrei premettere una cosa,nel momento che ho creato graficamente questi due edit text, ho scelto tra i textfield a disposizione, quello che mi permette di inserire numeri con la virgola ossia Number(decimal) volevo chiedere innanzitutto se è corretta la mia scelta.

La cosa che adesso mi sta dando problemi,e il MainActivity; e in particolar modo la parte di codice in cui mi deve fare la conversione:


public class MainActivity extends Activity {

Button converti;
EditText lire, euro;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

converti = (Button)findViewById(R.id.button1);
lire = (EditText)findViewById(R.id.editText1);
euro = (EditText)findViewById(R.id.editText2);

converti.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
euro = lire.getText() * 1936.27;
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}


La parte colorata in rosso e la parte in cui eclipse mi segnala l'errore.
Perpiacere qualcuno mi può far capire cosa sbaglio?
Grazie mille in anticipo!!

7 Risposte

  • Re: Convertitore Lire-euro

    Ciao!
    I problemi sono diversi:
  • Re: Convertitore Lire-euro

    Ciao grazie mille per il tuo aiuto,ho fatto come hai detto tu ed ho risolto il mio problema
    Grazie mille sei stato gentilissimo!!!!
  • Re: Convertitore Lire-euro

    Scusami se ti disturbo nuovamente siccome sono nuovo nella programmazione android, volevo chiederti una cosa.
    Siccome sto facndo un convertitore lire-->euro e viceversa, vorrei implementare questa cosa però con l'utilizzo dei RadioButton.
    Premesso che li ho inseriti in un RadioGroup in modo tale che quando è attivo uno l'altro è disattivato,volevo sapere la sintassi in java come è.
    Cerco di spiegarmi meglio; ho questo metodo:

    converti.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {


    Double valore = (Double.parseDouble(eLire.getText().toString())/1936.27);
    eEuro.setText("" + valore);

    }
    });

    che mi permette di effettuare la conversione da lire in euro
    Adesso dovrei scrivere la stessa cosa per efettuare l'operazione inversa,euro-->lire
    E fin qui tutto bene,ciò che non sò fare e come inserire i radiobutton nel file java,che metodo devo utilizzare e se lo devo scrivere nel metodo setOnClickListener
    Grazie mille per l'aiuto e scusami se ti disturbo nuovamente
  • Re: Convertitore Lire-euro

    Ciao, scusa se ti rispondo adesso ma non mi arrivano le notifiche tramite email, quindi non sapevo avessi risposto

    Detto questo, per "disegnare" i radio button ti conviene farlo tramite xml, perché è molto più semplice che non tramite codice.
    dovrai, quindi, scrivere all'interno del layout principale qualcosa del tipo
    
    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/convertitore">
        <RadioButton android:id="@+id/radio_euro"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true" [imposto questo RadioButton selezionato per default]
            android:text="converti in euro"/>
        <RadioButton android:id="@+id/radio_lire"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="converti in lire"/>
    </RadioGroup>
    
    Per quanto riguarda la gestione del click, invece, dovrai ottenere un riferimento al RadioGroup (attraverso findViewById(R.id.convertitore) ) e poi controllare quale radioButton è stato cliccato

    Supponendo che il calcolo debba essere fatto solamente quando l'utente clicca su un pulsante di calcolo, l'intera classe sarà qualcosa del tipo
    
    package com.example.radio;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RadioGroup;
    import android.widget.TextView;
    
    public class MainActivity extends Activity implements OnClickListener {
    	
    	private EditText valore;
    	private RadioGroup convertitore;
    	private TextView result;
    	private Button calcola;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            valore = (EditText) findViewById(R.id.valore); //Contiene il valore da convertire
            convertitore = (RadioGroup) findViewById(R.id.convertitore); //Il RadioGroup
            result = (TextView) findViewById(R.id.result); //Contiene il risultato della conversione
            calcola = (Button) findViewById(R.id.btn); //Il pulsante che da inizio alla conversione
            
            calcola.setOnClickListener(this);
        }
    
    	@Override
    	public void onClick(View v) {
    		
    		//Ottengo il valore immesso
    		double valImmesso = Double.parseDouble(valore.getText().toString());
    		double valConvertito = Double.NaN; //Imposto un valore iniziale non significativo
    		//Controllo quale radioButton è selezionato
    		switch (convertitore.getCheckedRadioButtonId()) {
    		case R.id.radio_euro:
    			valConvertito = convertiInEuro(valImmesso);
    			break;
    			
    		case R.id.radio_lire:
    			valConvertito = convertiInLire(valImmesso);
    			break;
    
    		default:
    			break;
    		}
    		
    		result.setText(""+valConvertito);
    	}
    
    	private double convertiInLire(double valore) {
    		return valore*1936.27;
    	}
    
    	private double convertiInEuro(double valore) {
    		return valore/1936.27;
    	}
    }
    
    Ovviamente se si preme il pulsante di calcolo senza immettere alcun valore, viene lanciata un'eccezione e l'applicazione va in crash. Bisognerebbe, quindi, gestire questo aspetto! (ad esempio attraverso un try/catch quando si fa il parse del numero)
  • Re: Convertitore Lire-euro

    Grazie mille comunque ci sono riuscito,però adesso che mi fai pensare hai ragione ,devo gestire il caso in cui nn inserisco nulla e premo il tasto converti,infatti ho provato e va in crasch
    Spero di riuscirci grazie
  • Re: Convertitore Lire-euro

    Che casino non mi ricordo più come si programma in java, è passato troppo tempo,ho provato a scrivere in questo modo l'eccezione ma mi da errore dove sbaglio?

    converti.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) throw (stringaVuota sv) {
    Double valConvertito = Double.NaN; //imposto un valore iniziale non significativo

    try {
    radioGroup1.getCheckedRadioButtonId();
    if(radioGroup1.getCheckedRadioButtonId()==R.id.rLireEuro){
    Double valore = (Double.parseDouble(eLire.getText().toString())); //mi ritorna il valore in lire digitato
    valConvertito = (valore/1936.27);
    eEuro.setText("" + valConvertito);

    }
    else if(radioGroup1.getCheckedRadioButtonId()==R.id.rEuroLire){
    Double valore = (Double.parseDouble(eEuro.getText().toString()));//valore digitato in euro
    valConvertito = (valore*1936.27);
    eLire.setText("" + valConvertito);
    }}
    catch (stringaVuota sv) {
    Toast.makeText(getBaseContext(), "Inserisci dati da convertire", Toast.LENGTH_SHORT).show();
    }
    }});



    }
  • Re: Convertitore Lire-euro

    Quello che intendevo era una cosa più semplice
    
    // Ottengo il valore immesso
    double valImmesso;
    try {
    	valImmesso = Double.parseDouble(valore.getText().toString());
    } catch (NumberFormatException ex){
    	Toast.makeText(this, "Numero non valido", Toast.LENGTH_SHORT).show();
    	return;
    }
    
    ....
    
Devi accedere o registrarti per scrivere nel forum
7 risposte