java - 从后面的字符串中删除破折号或删除键?
问题描述
我的代码在第 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();
}
});
}
解决方案
我使用图书馆解决了它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();
}
});
}
推荐阅读
- apache-kafka - 从kafka主题读取消息时如何在数据库关闭时处理异常
- angular - 我怎样才能修复我的代码,以便我可以读取我的数据
- mysql - 如何在一个列大于同一个表的另一列的情况下进行查询
- c# - 绑定多个
- android - 在android中跟踪屏幕时间
- javascript - 通过数据属性滚动到 div 不起作用
- angular - 如何使用 NbSelect(多个)在星云主题中创建自定义注册组件
- c# - Xamarin - 无法开始调试“系统找不到指定的文件。”
- javascript - 使用选择表单中的选项将数据从 firebase 插入文本框
- java - java - 如何在Java中的弹性搜索Querybuilder中处理多个“和”“或”运算符