-1

重複の可能性:
数値形式の例外を処理する方法

$22,000,420 のような形式で数字を入力したいのですが、数字を消去すると数字の書式設定の例外が表示されます。

私のxmlファイルは次のとおりです:-

<EditText
        android:id="@+id/editAmountFinanced"
        style="@style/EditTextInputFinance"
        android:layout_below="@+id/txtCreateNewAccount"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="AMOUNT FINANCED"
         android:digits="0123456789.,$"
        android:padding="10dp" />

私のAndroid Javaコードは次のとおりです:-

 editAmountFinanced = (EditText)findViewById(R.id.editAmountFinanced);

 editAmountFinanced.addTextChangedListener(new TextWatcher() {

        boolean isEdiging;
        @Override
        public void onTextChanged(CharSequence s, int start, int before,  int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            if(isEdiging) return;
            isEdiging = true;

            String str = s.toString().replaceAll( "[^\\d]", "" );
            double s1 = Double.parseDouble(str);

            NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);
            ((DecimalFormat)nf2).applyPattern("$ ###,###.###");
            try {

                s.replace(0, s.length(), nf2.format(s1));

                isEdiging = false;
            } catch(NumberFormatException e) {

            }

        }
    });

ありがとう

4

2 に答える 2

2

質問を投稿する前に、類似の質問を検索してください。こちらをご覧ください:類似の質問

あなたの場合、このように double s1 = の上に try を置くだけです

    double s1 = 0.0;
      try {
           s1 = Double.parseDouble(str);
     } catch(NumberFormatException e) {}
        NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);
        ((DecimalFormat)nf2).applyPattern("$ ###,###.###");
         s.replace(0, s.length(), nf2.format(s1));

         isEdiging = false;
于 2013-02-04T09:41:05.617 に答える
0

次の質問と回答から答えが得られると思います

NumberFormatException - Android

Androidのlang.NumberFormatException

于 2013-02-04T09:41:07.370 に答える