Java 带掩码的EditText中的字符串格式错误
我正在尝试为权重输入设置我的EditText。问题是它的格式应该像maxLenght=5(它是变量)的“1149”一样,并且它一直工作到我按下backspace。然后它会制作类似“1,,49”的东西 例如:Java 带掩码的EditText中的字符串格式错误,java,android,android-edittext,Java,Android,Android Edittext,我正在尝试为权重输入设置我的EditText。问题是它的格式应该像maxLenght=5(它是变量)的“1149”一样,并且它一直工作到我按下backspace。然后它会制作类似“1,,49”的东西 例如: 1,2,3,4 退格,退格 3,4 给我一个结果: 1234 1,2 1,23 editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLenght)}); edit
- 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(); } }
一些示例屏幕截图有助于理解。从未听说过文本被篡改。我提供了来自设备的示例。之所以发生这种情况,是因为您保留了“,”并删除了数字。相反,让用户键入数字,在用户失去焦点后,用“,”格式化数字