我有一个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?非常感谢
答案 0 :(得分:0)
在onTextChanged
方法中,您没有更改s
的值,这就是它打印“1”的原因。当您致电et.setText
时,将再次调用方法onTextChanged
,这次s
的值将为“Hello”。一切都在这里正常工作。