长话短说我遇到了这个问题:我正在将textwatcher附加到edittext上。一旦" 1"是写在它上面的最后一个字母,应该用字母" a"代替。但问题出在这里:我很快就会喜欢" a"也是编辑文本上写的最后一个字符(用户按下" a"),除了先前的方法,还有一些事要做。但是当我测试它并键入" 1"时,它转换为" a"通常,我提到的事情也已完成。我似乎无法找到一种方法来绕过这个,可以给出任何建议吗?非常感谢。我用:
public void afterTextChanged(Editable s) {
//TODO Auto-generated method stub
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '1') {
current_string = s.toString().substring(0, (s.length() - 1));
et.setText(current_string + "a");
length = s.length();
et.setSelection(length);
}
else if (s.length() > 0 && s.toString().charAt(s.length() - 1) == 'a') {
//do some things
}
答案 0 :(得分:1)
试试这个
public void afterTextChanged(Editable s) {
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == 'a') {
//do some things
}
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '1') {
current_string = s.toString().substring(0, (s.length() - 1));
et.setText(current_string + "a");
length = s.length();
et.setSelection(length);
}
答案 1 :(得分:0)
你的意思是。
1)当用户输入1时,它应替换为'a'。 2)当用户单独输入'a'时(不是由步骤1转换),它应该做其他事情
amount1.addTextChangedListener(new TextWatcher() {
int flagg;
public void onTextChanged(CharSequence s, int start, int before,
int count) {
System.out.println("flagg"+s+"#"+flagg );
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '1' )
{ System.out.println("Converting and doing NOthing");
flagg=1;
String current_string = s.toString().substring(0,(s.length() - 1));
amount1.setText(current_string + "a");
int length = s.length();
amount1.setSelection(length);
}
else if (s.length() > 0 && ( s.toString().charAt(s.length() - 1) == 'a') && flagg == 0 ) {
System.out.println("Staying same and doing Something");
amount2.setText(amount2.getText().toString() + "Z");
// do some things
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (start != 0) {
if ((s.toString()).substring(s.length() - 1).equals("a")) {
flagg = 1;
}
if ((s.toString()).substring(s.length() - 1).equals("1")) {
flagg = 0;
} else {
flagg = 0;
}
}
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
//new flagg is set in if condition