private class CustomTextWatcher implements TextWatcher { private EditText mEditText;public CustomTextWatcher(EditText e) { mEditText = e;}public voID beforeTextChanged(CharSequence s,int start,int count,int after) {}public voID onTextChanged(CharSequence s,int before,int count) {}public voID afterTextChanged(Editable s) { int count = s.length(); String str = s.toString(); if (count == 1) { str = str + "'"; } else if (count == 3) { str = str + "\""; } else if ((count > 4) && (str.charat(str.length() - 1) != '\"')) { str = str.substring(0,str.length() - 2) + str.charat(str.length() - 1) + "\""; } else { return; } mEditText.setText(str); mEditText.setSelection(mEditText.getText().length());}
}
解决方法 忽略Karakuri发布的有关您的代码处于错误回调中的事实,您可以添加一个简单的修复程序,您只需要听取用户使用的密钥.如果没有对现有代码进行任何实际测试或进一步改进,这似乎可以解决您描述的问题:
package com.example.testwatchertest;import androID.app.Activity;import androID.os.Bundle;import androID.text.Editable;import androID.text.TextWatcher;import androID.vIEw.KeyEvent;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnKeyListener;import androID.Widget.EditText;public class MainActivity extends Activity implements TextWatcher { EditText editText; boolean keyDel = false; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); editText = (EditText) findVIEwByID(R.ID.editText); editText.addTextChangedListener(this); editText.setonKeyListener(new OnKeyListener() { @OverrIDe public boolean onKey(VIEw v,int keyCode,KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DEL){ keyDel = true; }else{ keyDel = false; } return false; } }); } @OverrIDe public voID afterTextChanged(Editable s) { // Todo auto-generated method stub } @OverrIDe public voID beforeTextChanged(CharSequence s,int after) { // Todo auto-generated method stub } @OverrIDe public voID onTextChanged(CharSequence s,int count) { if (!keyDel) { String str = s.toString(); if (count == 1) { str = str + "'"; } else if (count == 3) { str = str + "\""; } else if ((count > 4) && (str.charat(str.length() - 1) != '\"')) { str = str.substring(0,str.length() - 2) + str.charat(str.length() - 1) + "\""; } else { return; } editText.setText(str); editText.setSelection(editText.getText().length()); } }}总结
以上是内存溢出为你收集整理的android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它全部内容,希望文章能够帮你解决android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)