2013-07-31 94 views
9

因此,我正在搞java/android编程,现在我正在试图制作一个非常基本的计算器。虽然我在这个问题上挂了。这是我的代码,现在为获得数多数民众赞成在TextView中并使其一个int将textview中的数字转换为int

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

,从我可以告诉它是导致错误的第二线,但林不知道为什么它是这样做的。它编译的很好,但是当它试图运行这部分程序时,它会崩溃我的应用程序。而在textview中唯一的是数字

有什么建议吗?

我也可以在必要时

+4

建议:阅读(和发布)错误。 – kabuko

+0

你能分享一个更详细的代码吗? – Peshal

+0

并发布从'getText()'返回的值以及 – alfasin

回答

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

不要忘记捕捉异常,因为TextView中的文本可能不是有效数字。 –

+0

Like Gaurav说: 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

您可以在TextView使用阅读提供更多的我的代码。

如何声明它:

TextView tv; 

初始化:

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

或:

tv = new TextView(MyActivity.this); 

或者,如果你正在膨胀的布局,

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

要设置字符串为tv,请使用tv.setText(some_string)tv.setText("this_string")。如果需要设置整数值,请使用tv.setText("" + 5)作为setText()是一个可以处理字符串和整型参数的重载方法。

要从tv使用tv.getText()得到一个值。

总是检查解析器是否可以处理textView.getText().toString()可以提供的可能值。如果尝试解析空字符串(“”),则会引发NumberFormatException。或者,如果您尝试解析.

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

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

+1以获得彻底的答案 – andy256