我要做的是:用户在edittext中输入文本。示例:" ab"然后当他输入一个像''<&#;让我们说,这会导致之前键入的最后一个字符增加一。在这个例子中,它" ac" ('<&#;;也应删除)。在onTextChanged方法中,我使用:
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '<') { //ab<
character = s.toString().charAt(s.length() - 2); //keep b
current_string = s.toString().substring(0, (s.length() - 2)); //a
et.setText(current_string); //set a
next_character_to_integer = (int) character + 1; //b is 98 ascii, need 99
integer_to_character = (char) next_character_to_integer; // 99 = char c
et.setText(s + String.valueOf(integer_to_character)); //set a+c
length = s.length();
et.setSelection(length); //move cursor after c
}
但是这给了&#34; abqc&#34; !!!我可能已经足够接近但仍无法找到解决方案。有任何想法吗?非常感谢
答案 0 :(得分:0)
致电时:
et.setText(s + String.valueOf(integer_to_character)); //set a+c
您使用的是未更新的s
的原始值。将行更改为:
et.setText(current_string + String.valueOf(integer_to_character)); //set a+c
看看你得到了什么。
答案 1 :(得分:0)
试试这个:
if (s.length() > 0 && s.toString().charAt(s.length() - 1) == '<') {
character = s.toString().charAt(s.length() - 2);
current_string = s.toString().substring(0, (s.length() - 2));
character += 1;
et.setText(current_string + character);
length = et.getText().toString().length();
et.setSelection(length);
}
这应该有用。