gpt4 book ai didi

android - 当我在文本框中键入一些文本时,OnKey 事件分派(dispatch)了两次。如何预防?

转载 作者:太空狗 更新时间:2023-10-29 16:07:49 24 4
gpt4 key购买 nike

在调试期间,我发现发生了一件奇怪的事情。我有一个 EditText 控件,我将当前 Activity 定义为 OnKeyListener 以在用户键入时执行验证。

代码

txtPhoneNumber.setOnEditorActionListener(this);
txtPhoneNumber.setOnKeyListener(this);
txtPhoneNumber.setOnFocusChangeListener(this);

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
String phoneNumber = ((TextView) v).getText().toString();
if (phoneNumber != null && !"".equals(phoneNumber))
setValidPhoneNumber(checkValidPhoneNumber(phoneNumber));

setForwardButtonEnabled(this.validPhoneNumber && this.readyToGo);

if (actionId == EditorInfo.IME_ACTION_DONE) {
InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
in.hideSoftInputFromWindow(v.getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}

return false;
}

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {

String phoneNumber = ((TextView) v).getText().toString();
if (phoneNumber != null && !"".equals(phoneNumber))
setValidPhoneNumber(checkValidPhoneNumber(phoneNumber));

setForwardButtonEnabled(this.validPhoneNumber && this.readyToGo);

return false;
}

好吧,我可以承认,当用户按下 Enter 键时再次执行验证是非常多余的,而不仅仅是关闭软键盘。但是我发现 OnKey 事件被分派(dispatch)了两次。

例如,我正在编写 3551234567 并且我已经输入了 355。当我按 1 时,一个事件被触发 v.getText() = 355 下一个事件 v.getText() = 3551

我想知道这是否正常,是否可以通过区分这是“preOnKeyEvent”还是“postOnKeyEvent”来避免这种情况。我只需要事件之后的字符串,而不是之前

谢谢

最佳答案

您可能同时获得按键按下/按键弹起事件。

尝试通过检查 ACTION_UP 操作的 KeyEvent 操作来过滤您的方法。

阅读this了解更多信息

关于android - 当我在文本框中键入一些文本时,OnKey 事件分派(dispatch)了两次。如何预防?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com