それで、私はJava/Androidプログラミングをいじくり回していて、今は本当に基本的な計算機を作ろうとしています。しかし、私はこの問題に悩まされています。これは、テキストビューの数を取得し、それをintにするために今持っているコードです
CharSequence value1 = getText(R.id.textView);
int num1 = Integer.parseInt(value1.toString());
そして、私が言うことができることから、それはエラーを引き起こしている2行目ですが、それがなぜそれをしているのかわかりません。正常にコンパイルされていますが、プログラムのこの部分を実行しようとすると、アプリがクラッシュします。そして、テキストビューにある唯一のものは数字です
何かアドバイス?
必要に応じて、より多くのコードを提供することもできます
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);
}
_
TextView tv = (TextView)findviewbyID(R.id.textView);
int num = Integer.valueOf(tv.getText().toString());
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");
}
このコードは実際にはうまく機能します:
//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
ここにkotlinバージョンがあります:
var value = textview.text.toString().toIntOrNull() ?: 0