• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EditText型をint型に変換し通貨表示に)

EditText型をint型に変換し通貨表示に

このQ&Aのポイント
  • AndroidのEditTextに、ユーザがインプットメソッドを用いて数字を入力した際、その値をint型変数と、String型変数に代入し、通貨書式で表示したい。
  • 現在のコードでは、アプリが起動直後にエラーが発生してしまい、原因はintへの変換部分です。
  • 修正するためには、EditTextから取得した文字列を適切にint型に変換する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • HNEX
  • ベストアンサー率62% (43/69)
回答No.1

パッと見ですが、onCreateでEditText生成直後に入力値を取り出して変換しようとしているからではないでしょうか? xmlでは初期値を設定していないので、getText()は空白が返されていて、空文字をparseIntしようとして例外が起きているのではと予想します

monedge
質問者

お礼

ヒントをありがとうございました。

monedge
質問者

補足

結局初期(未入力時の)数値がないのと、またエラーはtry/catchを書く以前の問題と思い込んでいたのが原因でした。 実はtry/catchで囲んだだけで(入力を促すだけで)エラーを返さなくなりました。数値はint型だと入力できる桁数が意外と少ないためlong型に変え、EditTextへのフォーカスを抜けるタイミングが間違っていたので、onFocusChangeメソッド内に処理をまるまる持ってきて、 @Override public void onFocusChange(View v, boolean getFocus) { if (v == editText1 && !getFocus){ //1行目 str1 = editText1.getText().toString(); //EditTextに入力された数字を取得 str1= str1.replace(",", ""); //EditTextに一度入力された(,)を撤去:修正時に必要 try{ long lng = Long.parseLong(str1); //Integerクラスの値=整数値を取得 NumberFormat numFormat = NumberFormat.getNumberInstance(); //位取りフォーマット str2 = numFormat.format(lng); //整数値を通貨フォーマットに editText1.setText(str2); //EditTextにセット(表示) } catch(Exception e){ Toast.makeText(this, "数字を入力してください", Toast.LENGTH_LONG).show(); } } } としました。 これでExcelのセルのように、入力後セル(EditText)を抜けると、通貨表示ができるようになりました。

関連するQ&A