web-dev-qa-db-ja.com

textviewの数値をintに変換します

それで、私はJava/Androidプログラミングをいじくり回していて、今は本当に基本的な計算機を作ろうとしています。しかし、私はこの問題に悩まされています。これは、テキストビューの数を取得し、それをintにするために今持っているコードです

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

そして、私が言うことができることから、それはエラーを引き起こしている2行目ですが、それがなぜそれをしているのかわかりません。正常にコンパイルされていますが、プログラムのこの部分を実行しようとすると、アプリがクラッシュします。そして、テキストビューにある唯一のものは数字です

何かアドバイス?

必要に応じて、より多くのコードを提供することもできます

12
Bigandrewgold

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);
}
_
17
Vikram
TextView tv = (TextView)findviewbyID(R.id.textView);
int num = Integer.valueOf(tv.getText().toString());
4
fenix
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");
}
1
ARMAGEDDON

このコードは実際にはうまく機能します:

//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
0
Bayan Al_A6rsh

ここにkotlinバージョンがあります:

var value = textview.text.toString().toIntOrNull() ?: 0
0
Z3nk