2014-10-20 3 views
0

editText에 자동 변경 형식 번호를 구현할 때 문제가 있습니다. 예 : "12.000"으로 editText에 숫자를 설정했지만 숫자를 입력 할 때 (내가 120.000으로 지정) 오류가 발생하거나 강제 종료됩니다. 이 내 코드edittext에서 숫자 형식을 자동으로 변경합니다. android

EditText confirm_vol_before= (EditText)findViewById(R.id.confirm_vol_before); 
//set value 
confirm_vol_before.setText("12.000"); 


confirm_vol_before.addTextChangedListener(new TextWatcher() { 
      @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 
       String val_confirm_vol_before = confirm_vol_before.getText().toString();     
       confirm_vol_before.setText(formatNumber(val_confirm_vol_before)); 
      } 
     }); 


String formatNumber(String bd){ 
     bd=bd.replace(".", ""); 
      DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(); 
      DecimalFormat formatter = new DecimalFormat("###,###.##", symbols); 
      bd=formatter.format(Long.parseLong(bd)); 
      return bd; 
     } 

이 로그 캣 그것을 해결하는 방법을 너무

10-20 12:52:04.586: E/AndroidRuntime(12422): FATAL EXCEPTION: main 
10-20 12:52:04.586: E/AndroidRuntime(12422): java.lang.StackOverflowError 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1013) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.SpannableStringBuilder.getChars(SpannableStringBuilder.java:913) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextUtils.getChars(TextUtils.java:70) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.method.ReplacementTransformationMethod$ReplacementCharSequence.getChars(ReplacementTransformationMethod.java:151) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextUtils.getChars(TextUtils.java:70) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.graphics.Paint.getTextRunAdvances(Paint.java:1855) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.graphics.Paint.getTextRunAdvances(Paint.java:1809) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextLine.handleText(TextLine.java:759) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextLine.handleRun(TextLine.java:955) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextLine.measureRun(TextLine.java:414) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextLine.measure(TextLine.java:293) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.TextLine.metrics(TextLine.java:267) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.Layout.getLineExtent(Layout.java:974) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.Layout.getLineStartPos(Layout.java:500) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.Layout.getHorizontal(Layout.java:837) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.Layout.getHorizontal(Layout.java:809) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.text.Layout.getPrimaryHorizontal(Layout.java:793) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.getFocusedRect(TextView.java:5097) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.FocusFinder.findNextFocus(FocusFinder.java:129) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.FocusFinder.findNextInputFocus(FocusFinder.java:102) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.FocusFinder.findNextFocus(FocusFinder.java:83) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.FocusFinder.findNextFocus(FocusFinder.java:65) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:644) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.ViewGroup.focusSearch(ViewGroup.java:646) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.View.focusSearch(View.java:6198) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.onCreateInputConnection(TextView.java:5651) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1078) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.view.inputmethod.InputMethodManager.restartInput(InputMethodManager.java:1032) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3626) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3564) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.EditText.setText(EditText.java:100) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3539) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at com.ad.tanker.ViewFillOrder$2.afterTextChanged(ViewFillOrder.java:425) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.sendAfterTextChanged(TextView.java:7369) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3713) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3564) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.EditText.setText(EditText.java:100) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3539) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at com.ad.tanker.ViewFillOrder$2.afterTextChanged(ViewFillOrder.java:425) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.sendAfterTextChanged(TextView.java:7369) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3713) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3564) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.EditText.setText(EditText.java:100) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3539) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at com.ad.tanker.ViewFillOrder$2.afterTextChanged(ViewFillOrder.java:425) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.sendAfterTextChanged(TextView.java:7369) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3713) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3564) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.EditText.setText(EditText.java:100) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3539) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at com.ad.tanker.ViewFillOrder$2.afterTextChanged(ViewFillOrder.java:425) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.sendAfterTextChanged(TextView.java:7369) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3713) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3564) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.EditText.setText(EditText.java:100) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at android.widget.TextView.setText(TextView.java:3539) 
10-20 12:52:04.586: E/AndroidRuntime(12422): at com.ad.tanker.ViewFillOrder$2.afterTextChanged(ViewFillOrd 

? 고마워요. 내 영어로 죄송합니다.

+0

당신은 – Muthu

+0

PLIS 다시 내 질문에 CEK 당신의 로그 캣 정보를 추가 할 수 있습니다 : D –

+0

질문에 대한 몇 가지 설명이 필요합니다. 무엇을하기를 원하며 오류가 발생하는 지점을 지적하십시오. – Ali

답변

1

이 방법을 시도해보고 문제를 해결하는 데 도움이되기를 바랍니다.

String formatNumber(String bd){ 
    Double number = Double.valueOf(bd.replace(".", "")); 
    DecimalFormat dec = new DecimalFormat("#,##0.00"); 
    return dec.format(number); 
} 
+0

이와 같은 문제를 해결하는 데 매우 유용한 방법입니다. +1 –

+0

내 fuction이 아니라 오류, .. 제발 내 질문을 다시보고, 내가 업데이 트를 추가 logcat .. Logged –

관련 문제