afterTextChanged 附加不起作用

Dav*_*vid 3 android android-edittext

text.addOnTextChanged(new TextWatcher() {

  @Override
  public void afterTextChanged(Editable s) {
      if (s.length() == 4 || s.length() == 9 || s.length() == 14) {
          text.append("-");
      }
  }

}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,该代码不起作用。我将它简化为它应该是什么的核心。理想情况下,您会看到“1234-5678-1234-5678”作为输出,因为我最多取 16 位数字。我开始使用它text.setText(s.toString() + "-"),然后在可运行的帖子中,将选择设置为s.length() + 1,但 append 会为您处理。此外,在几毫秒内,您可以看出由于setText之前setSelection生效,光标回到了开头。

为什么不起作用?

j2e*_*nue 6

您的 xml edittext 声明中的输入类型不应为“数字”。像这样用 digit 交换 inputType:

android:digits="0123456789 -."
Run Code Online (Sandbox Code Playgroud)