14

所以,我在搞 java/android 编程,现在我正在尝试制作一个非常基本的计算器。不过,我对这个问题很感兴趣。这是我现在用于获取 textview 中的数字并将其设置为 int 的代码

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

据我所知,这是导致错误的第二行,但我不确定它为什么会这样做。它编译得很好,但是当它尝试运行程序的这一部分时,它会使我的应用程序崩溃。文本视图中唯一的就是数字

有什么建议吗?

如有必要,我还可以提供更多代码

4

5 回答 5

19

您可以阅读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 参数的重载方法。

tvuse中获取价值tv.getText()

始终检查解析器是否可以处理textView.getText().toString()可以提供的可能值。NumberFormatException如果您尝试解析空字符串 (""),则会抛出A。或者,如果您尝试解析..

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

if (!tvValue.equals("") && !tvValue.equals(......)) {
    int num1 = Integer.parseInt(tvValue);
}
于 2013-07-31T23:27:19.867 回答
7
TextView tv = (TextView)findviewbyID(R.id.textView);
int num = Integer.valueOf(tv.getText().toString());
于 2013-07-31T22:59:58.293 回答
2

这是科特林版本:

var value = textview.text.toString().toIntOrNull() ?: 0
于 2019-01-02T08:43:00.083 回答
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");
}
于 2013-07-31T23:26:35.123 回答
1

这段代码实际上效果更好:

//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
于 2018-09-11T21:08:46.050 回答