Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带掩码的EditText中的字符串格式错误_Java_Android_Android Edittext - Fatal编程技术网

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

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

我正在尝试为权重输入设置我的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)});
    
            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();
                    }
                }
    

一些示例屏幕截图有助于理解。从未听说过文本被篡改。我提供了来自设备的示例。之所以发生这种情况,是因为您保留了“,”并删除了数字。相反,让用户键入数字,在用户失去焦点后,用“,”格式化数字