我有一个EditText,其中用户应该输入一个包含小数的数字,我想要一个千位分隔符自动添加到输入数字我尝试了几个其他方法,但有些不允许浮点数,所以我想出了这个代码有效只是字符串输入没有被实时编辑成可能有千位分隔符的字符串输入,并且错误似乎源于s.replace();
am2 = new TextWatcher(){
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
public void afterTextChanged(Editable s) {
if (s.toString().equals("")) {
amount.setText("");
value = 0;
}else{
StringBuffer strBuff = new StringBuffer();
char c;
for (int i = 0; i < amount2.getText().toString().length() ; i++) {
c = amount2.getText().toString().charAt(i);
if (Character.isDigit(c)) {
strBuff.append(c);
}
}
value = Double.parseDouble(strBuff.toString());
reverse();
NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);
((DecimalFormat)nf2).applyPattern("###,###.#######");
s.replace(0, s.length(), nf2.format(value)); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序.在我的应用程序中,我必须使用基于文本的图像.所以我写OnChangeListener()的EditText.以下是我的示例代码.
edt.addTextChangedListener(this);
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
CharSequence cs=convert(edt.getText.toString());
edt.setText(cs);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
Run Code Online (Sandbox Code Playgroud)
但我得到上述代码的异常.我知道异常的原因是setText()从afterTextChanged()方法调用.但我必须EditText根据相同的EditText文本更改更改文本值.帮助我的朋友