java - 当我们退格删除最后一个字符时,TextWatcher 覆盖未调用。我怎么知道最后一个字符是否被删除?
问题描述
我正在尝试保存在 EditText 上键入的内容。当用户键入一些文本时,文本观察器工作正常。当用户删除文本时,文本观察器工作正常,直到用户删除最后一个字符。
answerEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
saveAnswer(editable.toString())
}
});
当最后一个字符被删除时,saveAnswer 期望得到的是一个空字符串。但实际结果是没有触发。
解决方案
使用 TextWatcher 和 onTextChange 方法来跟踪用户输入,当用户第一次在 watcher 中写东西时,然后自己存储文本并自己检查差异。因为每次用户更改字符时都会触发 onTextChanged。
String userInputText=userText.getString().toString();
@Override
onTextChanged(CharSequence s, int start, int before, int count){
compareText(s, userInputText); //compare and do whatever you need to do
previousText = s;
}
推荐阅读
- amazon-web-services - 如何判断哪个 ELB 向我发送了流量?
- typescript - 从 Cloud Function 内部使用 API
- reactjs - Adding 2nd browser to Socket.IO and the first stops responding
- php - WP Contact Form 7 无法发送附件
- javascript - 如何使自定义范围输入适用于触摸屏?
- flutter - Future Builder 在 api 中有数据,但返回 Null
- dynamics-crm - 如何在 ADFS 中配置用户以能够访问 CRM
- sql - 什么将是 SQL 选择语句来识别被列为关系 A 的每本书的作者的个人
- gmail - 尝试通过 API 删除 gmail 邮件时出现 401 错误
- r - 基于数据框列创建闪亮仪表板tabPanels