TextWatcher - CharSequence S未更新

时间:2014-07-04 15:06:44

标签: android textwatcher

我有一个edittext和一个textwatcher。我希望用户按下' 1',"您好"改为编写(所以" 11"给出" HelloHello")。我用:

public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (s.length() > 0  && s.toString().charAt(s.length() - 1) == '1' )
    {
        String current_string = s.toString().substring(0,(s.length() - 1));
        et.setText(current_string + "Hello");
        length = s.length();
        et.setSelection(length);
        System.out.println(s.toString()); //←←←←←←←←←←
    }

一切都运行良好。但除了一件我很好奇的事情。当我启动应用程序并输入" 1"它转换为"你好"。 println函数打印" 1"。不应该打印"你好"代替?为什么在setText函数之后才更新charsequence?非常感谢

1 个答案:

答案 0 :(得分:0)

onTextChanged方法中,您没有更改s的值,这就是它打印“1”的原因。当您致电et.setText时,将再次调用方法onTextChanged,这次s的值将为“Hello”。一切都在这里正常工作。