1

すべて - 私は次のedittextように通貨用にフォーマットされた を持っています:

ここに画像の説明を入力

問題は、ユーザーがバックスペースを使用して数字が 1 つしかなく、ドル記号 ($5) よりも多くの場合、もう一度バックスペースを押すと、アプリが強制終了することです。logcat を調べたところ、textwatcher の無効な double ($) が原因であることがわかりました。これは、私のコードを見ると完全に理にかなっています。

public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (!s.toString().equals(current)) {
        editText$.removeTextChangedListener(this);

        String cleanString = s.toString().replaceAll("[$,]", "");

            double parsed = Double.parseDouble(cleanString);
            NumberFormat formatter = NumberFormat.getCurrencyInstance();
            formatter.setMaximumFractionDigits(0);
            String formatted = formatter.format(parsed);

            current = formatted;

            editText$.setText(formatted);
            editText$.setSelection(formatted.length());
            editText$.addTextChangedListener(this);         

テキストウォッチャー内で「if」ステートメントを使用して、フォーマットを通過する前にドル記号だけが残っているかどうかをキャッチしようとしましたが、運がありませんでした。この問題の回避策を知っている人はいますか? ありがとう。

4

0 に答える 0