首页 > 解决方案 > 从后面的字符串中删除破折号或删除键?

问题描述

我的代码在第 5 位和第 12 位之后添加了一个破折号,但在删除这些数字时,按退格键后破折号不会被删除。删除最后一位后卡住了。

这是我从堆栈链接之一实现的代码。

EditText Cnic;
int maxLength = 15;
int len =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

 Cnic = (EditText)findViewById(R.id.cnic_edtext);

    Cnic.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
    Cnic.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String str =  s.toString();
            if(s.length() == 5 || s.length() == 13){

                str += "-";
                Cnic.setText(str);
                Cnic.setSelection(str.length());
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

            String str =  s.toString();
            len = str.length();
        }
    });

}

标签: javaandroid

解决方案


我使用图书馆解决了它import tw.henrychuang.lib.AutoAddTextWatcher;

 EditText Cnic;
int maxLength = 15;
String str;
Button save;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

 Cnic = (EditText)findViewById(R.id.cnic_edtext);
 save = (Button)findViewById(R.id.save_btn);
    Cnic.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
    Cnic.setKeyListener(new DigitsKeyListener().getInstance("0123456789-"));


    Cnic.addTextChangedListener(new AutoAddTextWatcher(Cnic,
            "-",
            5, 12));


    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
             str =  Cnic.getText().toString();

            Toast.makeText(MainActivity.this, "Cnic "+str, Toast.LENGTH_SHORT).show();

        }
    });



}

推荐阅读