2013-07-31 12 views
9

Tak, mam zamiar ingerować w programowanie Java/Android i teraz próbuję zrobić naprawdę podstawowy kalkulator. Jestem jednak zawieszony w tej sprawie. Jest to kod mam teraz dla coraz ów numerycznych w TextView i czyni go intKonwertuj numer w tekście tekstowym na int

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

A z tego co mogę powiedzieć to to druga linia, która jest przyczyną błędu, ale nie jestem pewien, dlaczego to robi. Kompiluje się dobrze, ale kiedy próbuje uruchomić tę część programu, powoduje awarię mojej aplikacji. A jedyną rzeczą, która jest w tekście to numery:

Jakaś rada?

Mogę również zapewnić bardziej mojego kodu w razie potrzeby

+4

Wskazówka: przeczytaj (i opublikuj) błąd. – kabuko

+0

Czy możesz udostępnić bardziej szczegółowy kod? – Peshal

+0

i opublikuj wartość zwracaną przez 'getText()' oraz – alfasin

Odpowiedz

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

Nie zapomnij uchwycić wyjątku, ponieważ tekst w TextView może nie być prawidłowym numerem. –

+0

Tak jak Gaurav powiedział: 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

można przeczytać na wykorzystaniu TextView.

Jak ją zadeklarować:

TextView tv; 

zainicjować:

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

czyli

tv = new TextView(MyActivity.this); 

lub, jeśli pompowania układ,

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

Aby ustawić ciąg znaków na tv, użyj tv.setText(some_string) lub tv.setText("this_string"). Jeśli musisz ustawić wartość całkowitą, użyj tv.setText("" + 5), ponieważ setText() jest przeciążoną metodą, która może obsłużyć argumenty string i int. Aby uzyskać wartość od tv, użyj .

Zawsze sprawdź, czy analizator składni może obsłużyć możliwe wartości, które może dostarczyć textView.getText().toString(). Jeśli spróbujesz przeanalizować pusty ciąg znaków (""), zostanie wygenerowany NumberFormatException. Lub, jeśli próbujesz parsować ..

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

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

+1 za dokładną odpowiedź – andy256