2013-07-31 22 views
9

Quindi, sto scherzando con la programmazione java/android e in questo momento sto cercando di fare una calcolatrice davvero semplice. Sono appeso su questo problema però. Questo è il codice che ho in questo momento per ottenere il thats numero nel TextView e rendendolo un intConverti numero in vista testo in int

CharSequence value1 = getText(R.id.textView); 
int num1 = Integer.parseInt(value1.toString()); 

E da quello che posso dire è la seconda linea che causa l'errore, ma im non so perché lo sta facendo Si sta compilando bene, ma quando tenta di eseguire questa parte del programma si blocca la mia app. E l'unica cosa che nella vista testo è i numeri

Qualche consiglio?

Posso anche fornire più del mio codice, se necessario

+4

Avviso: leggere (e pubblicare) l'errore. – kabuko

+0

puoi condividere un codice più dettagliato? – Peshal

+0

e pubblica il valore restituito da 'getText()' pure – alfasin

risposta

2
TextView tv = (TextView)findviewbyID(R.id.textView); 
int num = Integer.valueOf(tv.getText().toString()); 
+2

Non dimenticare di rilevare l'eccezione, poiché il testo in TextView potrebbe non essere un numero valido. –

+0

Come Gaurav ha detto: int num = Integer.parseInt (tv.getText(). ToString()); – Halfacht

0
TextView tv = (TextView)findviewbyID(R.id.textView); 
String text = tv.getText().toString(); 
int n; 
if(text.matches("\\d+")) //check if only digits. Could also be text.matches("[0-9]+") 
{ 
    n = Integer.parseInt(text); 
} 
else 
{ 
    System.out.println("not a valid number"); 
} 
14

Si può leggere su l'utilizzo di TextView.

Come di dichiararla:

TextView tv; 

inizializzarlo:

tv = (TextView) findViewById(R.id.textView); 

o:

tv = new TextView(MyActivity.this); 

o, se si sta gonfiando un layout,

tv = (TextView) inflatedView.findViewById(R.id.textView); 

Per impostare una stringa su tv, utilizzare tv.setText(some_string) o tv.setText("this_string"). Se è necessario impostare un valore intero, utilizzare tv.setText("" + 5) come setText() è un metodo sovraccarico in grado di gestire gli argomenti string e int.

Per ottenere un valore da tv utilizzare tv.getText().

Controllare sempre se il parser è in grado di gestire i possibili valori che è possibile fornire textView.getText().toString(). Viene generato un NumberFormatException se si tenta di analizzare una stringa vuota (""). O, se si tenta di analizzare ..

String tvValue = tv.getText().toString(); 

if (!tvValue.equals("") && !tvValue.equals(......)) { 
    int num1 = Integer.parseInt(tvValue); 
} 
+1

+1 per una risposta approfondita – andy256