Visualizzazione stampabile
-
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 ^_^
-
Se vuoi puoi provare a postare il resto del codice..
-
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
}
-
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 ^_^
-
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....
-
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.
-
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 ^_^
-
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ì.
-
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....
http://img207.imageshack.us/img207/3841/javao.png
Uploaded with ImageShack.us
-
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;
}
}