所以,我正在搞乱java / android编程,现在我正在尝试制作一个非常基本的计算器。我虽然挂了这个问题。这是我现在用于获取textview中的数字并使其成为int
的代码CharSequence value1 = getText(R.id.textView);
int num1 = Integer.parseInt(value1.toString());
从我所知道的是导致错误的第二行,但我不确定为什么会这样做。编译正常,但当它试图运行程序的这一部分时,它会崩溃我的应用程序。 textview中唯一的东西就是数字
有什么建议吗?
如有必要,我还可以提供更多代码
答案 0 :(得分:17)
您可以阅读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()是一个可以处理字符串和int参数的重载方法。
要从tv
使用tv.getText()
获取值。
始终检查解析器是否可以处理textView.getText().toString()
可以提供的可能值。如果您尝试解析空字符串(“”),则抛出NumberFormatException
。或者,如果您尝试解析.
。
String tvValue = tv.getText().toString();
if (!tvValue.equals("") && !tvValue.equals(......)) {
int num1 = Integer.parseInt(tvValue);
}
答案 1 :(得分:3)
TextView tv = (TextView)findviewbyID(R.id.textView);
int num = Integer.valueOf(tv.getText().toString());
答案 2 :(得分:1)
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");
}
答案 3 :(得分:0)
此代码实际上效果更好:
//this code to increment the value in the text view by 1
TextView quantityTextView = (TextView)findViewById(R.id.quantity_text_view);
CharSequence v1=quantityTextView.getText();
int q=Integer.parseInt(v1.toString());
q+=1;
quantityTextView.setText(q +"");
//I hope u like this
答案 4 :(得分:0)
这是kotlin版本:
var value = textview.text.toString().toIntOrNull() ?: 0