EditText中带有掩码的字符串格式错误

时间:2014-03-10 16:29:16

标签: java android android-edittext

我正在尝试设置我的EditText以进行重量输入。对于maxLenght = 5(它的变量)它应该格式化为“1,149”格式,并且它正在工作,直到我按退格键。然后它正在制作类似“1,49”的东西。

例如:

  • 1,2,3,4
  • 退格,退格
  • 3,4

给我结果:

  • 1234
  • 1,2
  • 1,...,23

            editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLenght)});
    
            editText.addTextChangedListener(new TextWatcher() {
    
                @Override
                public void afterTextChanged(Editable s) {
                    try {
                            editText.removeTextChangedListener(this);
    
                            String str = s.toString();
                            str = new StringBuilder(str).reverse().toString().replaceAll("(\\d{"+dokladnosc+"})", "$1,");
                            str = new StringBuilder(str).reverse().toString().replaceAll("^,|,$", "");
                            editText.setText(str);
                            try{
                                //Log.i("inf", editText.length()+"-"+str.length());
                                if(editText.length() == str.length())
                                {
                                    editText.setSelection(str.length());
                                }
                                else
                                {
                                    editText.setSelection(str.length()-1);
                                }
                            }
                            catch(Exception exc)
                            {
                                Log.e("Err", exc.toString());
                                //editText.setSelection(str.length()-1);
                            }
                            editText.addTextChangedListener(this);
                    } catch (NumberFormatException e) {
                        e.printStackTrace();
                    }
                }
    

Device test with steps to help understand the problem

0 个答案:

没有答案