[英]Android EditText event listeners
I am using onTextChanged()
for EditText
and onKey()
event handler. 我使用EditText
和onKey()
事件处理程序的onTextChanged()
。 I want to handle onTextChanged()
when text is entered and onKey()
when text is deleted ie i want to handle the KEYCODE_DEL
. 我想在输入文本时处理onTextChanged()
,而在删除文本时处理onKey()
,即我想处理KEYCODE_DEL
。 But my onTextchanged()
event always fires. 但是我的onTextchanged()
事件总是会触发。 Anyone can post me some ideas. 任何人都可以向我发布一些想法。
ed.setOnKeyListener(this);
ed. addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//
});
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEY CODE_ENTER) {
//
});
I solved the issue by writing the whole logic inside the TextWatcher() using all of its callbacks as onKeyListener will not be fired for SoftKeyBoard for Nexus Devices. 我通过使用所有回调在TextWatcher()内部编写整个逻辑来解决了该问题,因为Nexus设备的SoftKeyBoard不会触发onKeyListener。 I am posting the code which may be helpful for others 我发布的代码可能对其他人有帮助
ed.addTextChangedListener(new TextWatcher() {
private String previousDigits, num;
private boolean textChanged = false;
@Override
public void onTextChanged(CharSequence currentDigits, int start,
int before, int count) {
if (!(previousDigits.equalsIgnoreCase(currentDigits.toString()))) {
textChanged = true;
num = getStrippedNumber(currentDigits
.toString());
//getStrippedNumber method is used for getting the numeric digits from the string.
if (num.length() > 6) {
num = ("(" + num.substring(0, 3) + ") "
+ num.substring(3, 6) + "-" + num.substring(6));
} else if (num.length() > 3) {
num = ("(" + num.substring(0, 3) + ") " + num
.substring(3));
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
previousDigits = s.toString();
}
@Override
public void afterTextChanged(Editable s) {
if (textChanged) {
textChanged = false;
mEditPhoneNo.setText(num);
mEditPhoneNo.setSelection(mEditPhoneNo.getText().length());
}
}
});
Thanks Guyz
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.