TextWatcher - 将最后一个char的值增加一

时间:2014-06-13 09:52:46

标签: android textwatcher

我要做的是:用户在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; !!!我可能已经足够接近但仍无法找到解决方案。有任何想法吗?非常感谢

2 个答案:

答案 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);

}

这应该有用。